std::vector<PROCESSSTRUCT>::iterator
От: Balsamo Россия  
Дата: 16.11.05 08:33
Оценка:
У меня вопрос.
Если я запоминаю итератор, указывающий на какой-то элемен в векторе, а потом этот лемент удаляю, то итератор должен стать некорректным. Это верно?
Ес да, то как тогда можно вытащить из вектора все элементы, удовлетворяющие необходимому условию, и вставить их в другой вектор, содержание которого соответвтвует условию?

Код примерно следующий:


typedef std::vector<PROCESSSTRUCT> QSystemQueue[32]; 

bool CSystemQueue::Recalculate()
{
...
      //Теперь размещаем процессы по очередям в зависимости от их приоритета
      for (uint i = 1; i <= 15; ++i)
    {
        if(!m_SystemQueue[i].empty() )
        {
            std::vector<PROCESSSTRUCT>::iterator cur;
            std::vector<PROCESSSTRUCT>::iterator last = m_SystemQueue[i].end();
            for (cur = m_SystemQueue[i].begin(); cur != last; ++cur)
            {
                uint prior = cur->ProcInfo.Priority.p_nice - cur->ProcInfo.Priority.p_cpu;
                //Здесь необходимо написать код для перемещения структуры из одной очереди в другую
                                          //Хотелось бы что-то наподобии такого:
                //----------------------------------------
                if (proir != i)
                {
                    m_SystemQueue[prior].push_back(cur);
                    m_SystemQueue[i].erase(cur);
                };
                 //----------------------------------------

            };
            
        };
    };
}

Я плохо еще общаюсь с STL, вот никак не могу понять, как лучше это сделать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.