// думаю, структура класса TApex не принципиальна
в некотором *.h-нике
typedef vector<TApex*> TApexList;
...........
// где-то в программе
TApexList::iterator i;
i = ApexList.begin();
for(;i!=ApexList.end(); i++)
{
i->UID = 1;// ***
}
не работает итератор вектора указателей
Если я где-то неправ, пожалуйста, поправьте. Спасибо!
[/QUOTE]
Телепаты в отпуске, код в студию.
[QUOTE=Rubicon] Если в вектор помещать просто объект, тогда (ясное дело) все работает, но это займет лишюю память (я объект создаю динамически, а при помещении в вектор происходит копирование объекта, насколько мне известно), поэтому в вектор помещаю лишь указатели.
[/QUOTE]
А что тебе мешает удалить созданный объект, если он не нужен?
Насколько я помню, итератор сам по себе - указатель на объект, помещенный в вектор (в первом приближении). Если у тебя в вектор помещены указатели, то тебе придется пройти по цепочке "указатель на указатель". В этом может быть ошибка. Опять-таки дальше моих телепатических способностей не хватает, давай код!
Код:
При попытке компиляции ругается на строку с комментарием "***":
"Pointer to structure required on left size of -> or ->*"
Я что-то не так делаю или с указателя на объект такой фокус не проходит?
To Green: конечно можно, проблемы в общем-то нет. Просто чисто акодемический интререс --- а можно ли так (через список указателей).
(*i)->UID = 1;
В точку! Итератор сам по сути указатель, поэтому ты можешь так легко использовать его в качестве счетчика. Разыменовывая итератор, получаешь доступ к собственно элементу вектора.