Спрошу по-другому: Можно ли с минимумом траблов использовать вектор для создания динамических массивов переменных и классов и стринг для нормальной работы со строками?
> Спрошу по-другому: Можно ли с минимумом траблов использовать вектор для создания динамических массивов переменных и классов и стринг для нормальной работы со строками?
Можно.
-Eugene-
> Спрошу по-другому: Можно ли с минимумом траблов использовать вектор для
> создания динамических массивов переменных и классов и стринг для нормальной
> работы со строками?
нужно.
Necrys
Pushkoff
Ура!
Pushkoff
> по моему компилятор уже давно научился решать проблему вызова лишних пар
> конструктор/деструктор...
Куча простых людей верит, что бог может все.
Куча программистов верит, что компилятор оптимизирует все.
Все они не правы, потому что верить, это самое худшее, что может делать человек головой.
Pokimon
> > по моему компилятор уже давно научился решать проблему вызова лишних пар
> > конструктор/деструктор...
> Куча простых людей верит, что бог может все.
> Куча программистов верит, что компилятор оптимизирует все.
> Все они не правы, потому что верить, это самое худшее, что может делать человек
> головой.
вот пипец натуральный, ты только религию не трогай
Pokimon
innuendo
Холивар!
innuendo
> а приоритет как же ?
>
> типа скобок и тд :)
>
> ну это мы загнались
Это отдельно уже, как конвенция. Я хотел упростить задачу. :)
Проблему я затронул, но на деле проблема не в скорости и даже не в копировании (к тому же вроде тесты показывают что ничего по скорости не теряется из-за копирования), а дело всё в лишних конструкторах и деструкторах.
Если компилятор еще сможет справиться с оптимизацией лишнего копирования и удаления памяти для временных объектов, то copy конструкторы ему все равно придется выполнять и деструкторы тоже.
Но в любом случае, если нет copy конструкторов и деструкторов, то вектор не имеет претензий.
Вот и сбственно всё :) вроде бы.
Я щас озадачен не STL-ом уже, а встроенным malloc и free (и как следствие new и delete), либо мне мерещется, либо в VS2010 они стали летать ..., неужели оптимизировали ? пойду еще проверю :)
djonmalkovi4
> Но в любом случае, если нет copy конструкторов и деструкторов, то вектор не
> имеет претензий.
они сгенерируются автоматически...
djonmalkovi4
> а дело всё в лишних конструкторах и деструкторах
сначала проверь, не выкинул ли их оптимизатор...
Pokimon
> потому что верить
какая вера? у всего этого есть названия - начиная с RVO, NRVO, и кучи тому подобных... вместо тупой и бессмысленной пропаганды С, лучше бы книг почитал...
хотя, не читай... пока ты туп и упорот - ты доставляешь...
djonmalkovi4
> встроенным malloc и free (и как следствие new и delete)
запости код где ты их увидел в векторе... они используются только при изменении размера вектора, вставка/удаление в большинстве случаев происходит без их участия...
Pokimon
А как вставлять в STL контейнеры умные указатели типа CComPtr, чтобы не дергать лишний раз счетчик ссылок?
void fun(IUnknown *p) {
std::list<CComPtr<IUnknown> > l;
l.push_back(p);
}
Если вам хочется хранить в контейнерах указатели, используйте лучше boost::ptr_container, там не надо думать об удалении объектов.
Pushkoff
> у всего этого есть названия - начиная с RVO, NRVO,
Которые, кстати, по большому стратегическому счёту суть всё-таки зло, ибо усложняют правила, по которым предсказывается, сколько копий будет сделано от той или иной операции, и определяется времени жизни объекта.
Тема в архиве.