У меня вопрос.
Если я запоминаю итератор, указывающий на какой-то элемен в векторе, а потом этот лемент удаляю, то итератор должен стать некорректным. Это верно?
Ес да, то как тогда можно вытащить из вектора все элементы, удовлетворяющие необходимому условию, и вставить их в другой вектор, содержание которого соответвтвует условию?
Код примерно следующий:
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, вот никак не могу понять, как лучше это сделать.