(no subject)
Sep. 4th, 2009 08:53 pmПоскольку не силен в новомодном C++, реквестирую помощь зала...
info - банальная структура.
plugins - vector
Я плохо ориентируюсь в темплейтах... Потому спрашиваю:
Правильно ли я понимаю, что эта конструкция не безопасная, из-за того что по завершению каждой итерации цикла память из под info -- освобождается, и в ней может оказаться что угодно?
Или тут все верно? (У меня просто одно из полей info значение меняет с false на true без объявления войны, на пустом месте) Грешу именно на то как оно в список попадает...
for ( /* Some loop*/)
{
/*Some other actions */
pluginInfo info;
info.name = "что-то";
info.filePath = "еще что-то";
/*Ну и далее заполняем стрктуру*/
plugins.push_back(info);
}
for (vector<pluginInfo>::iterator itp = plugins.begin(); itp != plugins.end(); ++itp){
create((*itp));
}info - банальная структура.
plugins - vector
Я плохо ориентируюсь в темплейтах... Потому спрашиваю:
Правильно ли я понимаю, что эта конструкция не безопасная, из-за того что по завершению каждой итерации цикла память из под info -- освобождается, и в ней может оказаться что угодно?
Или тут все верно? (У меня просто одно из полей info значение меняет с false на true без объявления войны, на пустом месте) Грешу именно на то как оно в список попадает...
no subject
Date: 2009-09-18 07:13 am (UTC)push_back() помещает в коллекцию копию. Иногда, если копирование дорого (или лень возиться с правильной его реализацией), прибегают к следующей идиоме:В этом случае info является ссылкой на экземпляр в коллекции.