Назначить указатель на итератор - PullRequest
0 голосов
/ 13 января 2012

Мне нужно освободить, а затем выделить указатель в векторном итераторе.Можно ли назначить указатель на итератор, как указано ниже?

   VEC_SECS m_vec;
   m_vec.push_back(new CSecs);       
   VEC_SECS::iterator iter = m_vec.begin();

   for (iter ; iter != m_vec.end(); ++iter)
   {
          CSecs *p = *iter;
          delete p;         
          p = new CSecs;
          *iter = p;
   }

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Да, вы не назначаете указатель на итератор, вы просто переписываете элемент, на который указывает итератор.Я так понимаю, ваш VEC_SECS - это вектор указателей, верно?

0 голосов
/ 13 января 2012

Почему так сложно?Я бы просто написал

VEC_SECS m_vec;
m_vec.push_back(new CSecs);       
for (VEC_SECS::iterator iter = m_vec.begin(); iter != m_vec.end(); ++iter)
{
       CSecs& obj = **iter;
       obj = CSecs();
       // or just **iter = CSecs();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...