Re[4]: минусы STL
От: gid_vvp  
Дата: 19.02.07 11:12
Оценка: :)
_>>как мне кажется тут проблема у MFC... т.к. выделенное это С стиль

XC>а как решить эту задачу используя C++ стиль?


я полагаю использовать GUI библиотеки написанные в С++ стиле
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: минусы STL
От: . Великобритания  
Дата: 19.02.07 12:11
Оценка: :)
LuciferMoscow wrote:

> Это подразумевалось, т.к. мы говорим об STL. А как добавлять элементы в

> Ваш массив?
Написать свой аллокатор, который будет использовать alloca.
Правда нафиг нужно — непонятно.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[10]: минусы STL
От: Erop Россия  
Дата: 19.02.07 14:39
Оценка: +1
Здравствуйте, ., Вы писали:

.>Написать свой аллокатор, который будет использовать alloca.

.>Правда нафиг нужно — непонятно.

Зачем не знаю. Но мне так кажется, что выделенное осуществить не удастся
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[11]: минусы STL
От: . Великобритания  
Дата: 19.02.07 14:57
Оценка:
Erop wrote:

> .>*Написать свой аллокатор, который будет использовать alloca.*

> .>Правда нафиг нужно — непонятно.
> Зачем не знаю. Но мне так кажется, что выделенное осуществить не удастся
Почему? Аллоцировать с запасом, деаллокация — ничего не делает (или отмечает блок как свободный, на случай если кто-то
другой запросит блок такого размера), аллокация — всегда выделяет новый буфер.

Правда всё равно в реальной жизни это бесполезно, т.к. размер стека жутко ограничен.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[7]: минусы STL
От: Erop Россия  
Дата: 19.02.07 15:25
Оценка:
Здравствуйте, gid_vvp, Вы писали:

E>> Коммерческая библиотека классов, которая поставляется, например, с CodeWarrior


_>а её можно посмотреть не покупая?

Не знаю. У меня когда-то получалось
Может потому, что я это делал под MacOS, там есть своя специфика с пиратством
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: минусы STL
От: gid_vvp  
Дата: 19.02.07 15:29
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, gid_vvp, Вы писали:


E>>> Коммерческая библиотека классов, которая поставляется, например, с CodeWarrior


_>>а её можно посмотреть не покупая?

E>Не знаю. У меня когда-то получалось
E>Может потому, что я это делал под MacOS, там есть своя специфика с пиратством

да хотябы примеры доки... чтоб оценить
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: минусы STL
От: Erop Россия  
Дата: 19.02.07 15:31
Оценка:
Здравствуйте, gid_vvp, Вы писали:

_>я полагаю использовать GUI библиотеки написанные в С++ стиле

Библиотека называется Windows API или X-Windows, например.
О сотовых телефонах я вообще скромно молчу пока что.
И? Как решаем?: )
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: минусы STL
От: gid_vvp  
Дата: 19.02.07 15:34
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, gid_vvp, Вы писали:


_>>я полагаю использовать GUI библиотеки написанные в С++ стиле

E>Библиотека называется Windows API или X-Windows, например.
E>О сотовых телефонах я вообще скромно молчу пока что.
E>И? Как решаем?: )

легко

пишем C++ обёртки над этим C style API
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: минусы STL
От: LuciferMoscow Россия  
Дата: 19.02.07 17:41
Оценка:
Здравствуйте, ., Вы писали:

>> Это подразумевалось, т.к. мы говорим об STL. А как добавлять элементы в

>> Ваш массив?
.>Написать свой аллокатор, который будет использовать alloca.
.>Правда нафиг нужно — непонятно.
Т.е. Вы из стека кучу собираетесь сделать?
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[12]: минусы STL
От: Erop Россия  
Дата: 19.02.07 17:53
Оценка: +1
Здравствуйте, ., Вы писали:

.>Почему? Аллоцировать с запасом, деаллокация — ничего не делает (или отмечает блок как свободный, на случай если кто-то

.>другой запросит блок такого размера), аллокация — всегда выделяет новый буфер.
Потому, что alloca выделяет память на стековом фрейме вызывающей функции, то есть метода аллокатора
Так как inline-подсьановку метода гарантировать невозможно, то и работтоспособность этого "изделия" гарантировать не удастся

.>Правда всё равно в реальной жизни это бесполезно, т.к. размер стека жутко ограничен.

Странно. В известных мне операционках, обычно можно отматать столько стэка, сколько надо...
Пишешь нужное число в заголовок exeшника и всё...

А ещё можно стэк другой нити использовать...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[13]: минусы STL
От: . Великобритания  
Дата: 19.02.07 18:05
Оценка:
Erop wrote:

> .>Почему? Аллоцировать с запасом, деаллокация — ничего не делает (или

> отмечает блок как свободный, на случай если кто-то
> .>другой запросит блок такого размера), аллокация — всегда выделяет
> новый буфер.
> Потому, что alloca выделяет память на стековом фрейме вызывающей
> функции, то есть метода аллокатора
Хм... Действительно... Не подумал. Если можно как-то параметром аллокатору передавать текущий стековый фрейм... В
общем тут я уже сомневаюсь.

> .>Правда всё равно в реальной жизни это бесполезно, т.к. размер стека

> жутко ограничен.
> Странно. В известных мне операционках, обычно можно отматать столько
> стэка, сколько надо...
По умолчанию 1 мег. А как стек можно мотать динамически? Как оно будет гарантировать то, что место будет?

> Пишешь нужное число в заголовок exeшника и всё...

Ну это аналогично вызову reserve с большим числом прозапас (или специальному аллокатору с фиксированным размером).

> А ещё можно стэк другой нити использовать...

Извращенец.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[11]: минусы STL
От: . Великобритания  
Дата: 19.02.07 18:05
Оценка:
LuciferMoscow wrote:

> Т.е. Вы из стека кучу собираетесь сделать?

АГА!
Вот и интересно — а возможно ли?
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[9]: минусы STL
От: Erop Россия  
Дата: 19.02.07 18:43
Оценка:
Здравствуйте, gid_vvp, Вы писали:

_>да хотябы примеры доки... чтоб оценить

Если найду -- кину.
Там идея такая, что можно преобразовывать строки в числа и взад. Довольно легко и прямо.
При этом они там строки короче чего-то вообще не аллокируют никогда.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: минусы STL
От: Erop Россия  
Дата: 19.02.07 18:46
Оценка:
Здравствуйте, gid_vvp, Вы писали:

_>пишем C++ обёртки над этим C style API

Ну это и есть так называемое "совсем не уменьшается производительность труда" и "зачем писать свой велосипед, если есть STL"

Но это всё лирика. Вот есть LISTBOX. Наверное он довольно известен. На всяк случай скажу, что там на элемент можно задать 32 бита данных.
И что же мы пишем, чтобы запихнуть туда итератор?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[14]: минусы STL
От: Erop Россия  
Дата: 19.02.07 19:11
Оценка:
Здравствуйте, ., Вы писали:

.>Хм... Действительно... Не подумал. Если можно как-то параметром аллокатору передавать текущий стековый фрейм... В

.>общем тут я уже сомневаюсь.
И не зря

>> Странно. В известных мне операционках, обычно можно отматать столько

>> стэка, сколько надо...
.>По умолчанию 1 мег. А как стек можно мотать динамически? Как оно будет гарантировать то, что место будет?
Ну заранее в заголовке EXE пишешь максимальный размер, какой тебе надо и пользуйся, хоть ГИГ

>> А ещё можно стэк другой нити использовать...

.>Извращенец.

А то!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[10]: минусы STL
От: LuciferMoscow Россия  
Дата: 19.02.07 19:37
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, gid_vvp, Вы писали:


_>>да хотябы примеры доки... чтоб оценить

E>Если найду -- кину.
E>Там идея такая, что можно преобразовывать строки в числа и взад. Довольно легко и прямо.
boost::lexical_cast
E>При этом они там строки короче чего-то вообще не аллокируют никогда.
MS реализация std::string
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[4]: минусы STL
От: _DAle_ Беларусь  
Дата: 20.02.07 00:15
Оценка: 3 (1)
Здравствуйте, c-smile, Вы писали:

CS>А map? Как хранилище key/value пар? Ну дык hashmap эффективнее.

CS>Или как упорядоченный по ключу набор? И часто такое нужно?

Бывает нужно, и не так уж редко. А вот написать хорошую хэш-функцию, чтобы выполнялось выделенное, иногда для объектов куда сложнее, чем написать оператор порядка.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[13]: Размер stack-а главного thread-а
От: Пётр Седов Россия  
Дата: 20.02.07 01:33
Оценка: +1
Здравствуйте, Erop, Вы писали:
.>>Правда всё равно в реальной жизни это бесполезно, т.к. размер стека жутко ограничен.
E>Странно. В известных мне операционках, обычно можно отматать столько стэка, сколько надо...
E>Пишешь нужное число в заголовок exeшника и всё...
Зачем patch-ить exe-файл? Серьёзный компилятор позволяет указать размер stack-а главного thread-а.
Пётр Седов (ушёл с RSDN)
Re[2]: Проблемы STL-контейнеров
От: Андрей Тарасевич Беларусь  
Дата: 20.02.07 05:21
Оценка: +1 -1 :)
Здравствуйте, Аноним, Вы писали:

А>2. Все STL-контейнеры неявно копируются. Опасно, если неявная операция дорога.


Это опасность "по невнимательности". Таких опасностей в С++ много и недостаками они в рамках идеологии С++ считаются не должны.

А>4. STL-контейнеры провоцируют использование size_t. Беззнаковость этого типа влечёт проблемы.


Это неверно. В STL-контейнерах никак не используется 'size_t'. Используется же там контейнерно-зависимый беззнаковый тип 'size_type'. Использование беззнакого типа вполне оправдано, ибо соответствует он заведомо неотрицательному значению. В данном случае наблюдается следование правилу "всегда использовать в программе только беззнаковые типы, кроме тех мест, где необходим знаковый тип", что более чем похвально.

Ошибки при использовании беззнаковых типов (в т.ч. в примерах ниже) обусловлены обычно 1) невнимательностью и 2) неоправданным смешением знаковых и беззнаковых типов. По этой причине, аргументами их считать сложно.

А> Сам он всячески призывает программиста использовать int.


В этом Страуструп не столько "не прав", сколько допускает черезмерное упрощение, ориентируясь на начинающего программиста (его книга изобилует такими упрощениями). Это лишь вопрос подходов к обучению: учиться ли правильному использованию беззнаковых типов с самого начала, или все таки отложить на потом. Страуструп считает, что лучше отложить. Многие считают что лучше сразу.

А>Какое отношение size_t имеет к array-based контейнерам (vector, string), ещё понятно: в языках C/C++ длина/индекс массива выражаются типом size_t. Какое отношение size_t имеет к node-based контейнерам (list, map), непонятно совсем. В 90-ые годы (время проектирования STL), когда ещё живы были 16-битные платформы, использование size_t было оправдано. Сейчас это источник тонких ошибок.


Это утверждение построено на неверном предположении, что используется именно тип 'size_t'. На самом деле же никакого 'size_t' там и близко нет. Не надо путать 'size_t' с 'container<>::size_type'.

А>"Проблему size_t" можно решить несколькими способами:


Реальный способ тут только один — уситься пользоваться беззнаковыми типами как можно раньше. 99% целых типов в профессионально написаной среднестатистической программе должны являться беззнаковыми. Знаковые типы используются только в исключительных случаях.

"Страховочное" использование знаковых типов допустимо для начинающего программиста, но не более.

А>5. Нельзя получить итератор по указателю на элемент контейнера за константное время.


В общес случае — нельзя. Но это ограничение имеет свои оправдания, свои плюсы и минусы. Странно видеть его в качестве "минуса".

А>6. Вместо метода empty удобнее был бы метод с позитивным смыслом, например has_elems (возвращает true <=> в контейнере есть хотя бы один элемент).


Неочевидно. Если и минус, то очень слабый.

А>7. Нельзя const_cast const_iterator в iterator. Я с этой проблемой на практике не сталкивался. Теоретически, может возникнуть при неудачном дизайне.


Слабый и странный "минус".

А>9. list

А>9.1. list спроектирован так, что либо size за константное время, либо splice (вариант с 4-мя параметрами) за константное время (при условии, что allocator-ы равны).

А что делать? Так устроен мир. Именно к STL это мало относится.

А>10. string

А>10.1. Если программа много работает с текстом, то string (или его аналог) — ходовой тип. При этом желательно, чтобы неявное копирование string-а было дешёвым. Для этого реализация string-а может использовать разделяемый (между несколькими string-ами) буфер с подсчётом ссылок. Но string спроектирован в mutable стиле, поэтому у него есть не-const методы begin, end, rbegin, rend, operator[] и at. Если реализация string-а считает ссылки, то эти методы делают copy-on-write (даже если вы не собираетесь ничего менять) и запрещают разделяемость буфера.

По-моему это вопрос качества реализации. Нет?

А>10.2. Нет завершающего '\0'.


Нет. Не вижу в этом минуса. А придумать ситуацию, когда это неудобно можно всегда.
Best regards,
Андрей Тарасевич
Re[11]: минусы STL
От: gid_vvp  
Дата: 20.02.07 06:00
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

_>>>да хотябы примеры доки... чтоб оценить

E>>Если найду -- кину.
E>>Там идея такая, что можно преобразовывать строки в числа и взад. Довольно легко и прямо.
LM>boost::lexical_cast
E>>При этом они там строки короче чего-то вообще не аллокируют никогда.
LM>MS реализация std::string

т.е. ты видел это ? (PowerPlant)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.