У меня есть list
из lists
с элементами типа my_struct
. Я просматриваю каждый элемент с двумя итераторами (один для внешнего списка и один для внутренних списков) и выполняет некоторые вычисления. Каждый раз, когда я передавал внутренний список, я проверяю критерий и (при необходимости) пытаюсь разбить этот внутренний список на два, используя функцию splice()
. Я хочу переместить вторую часть внутреннего списка во внешний список (сразу после текущего внутреннего списка).Как реструктурировать список списков в C++ с использованием splice()
Вот что у меня до сих пор:
std::list<std::list<my_struct>> myList;
std::list<std::list<my_struct>>::iterator outerIter;
std::list<my_struct>::iterator innerIter;
for (outerIter = myList.begin(); outerIter != myList.end(); outerIter++)
{
std::list<my_struct> &listEntry = *outerIter;
for (innerIter = listEntry.begin(); innerIter != listEntry.end(); innerIter++)
{
// some calculations
}
if (criterion)
{
myList.splice(outerIter, listEntry, innerIter, listEntry.end());
}
}
Этот код должен делать, чтобы переставить std::list<my_struct>
начиная с innerIter
и заканчивая listEntry.end()
как новый внутренний список позади текущего проверяемого внутреннего списка ,
Я надеюсь, что вы поймете, что я имею в виду, поскольку я не знаю, как объяснить это более понятным.
Я уже опробовал различные способы написания части splice
, но всегда получал ошибки.
Итак, если у кого-то есть идея о том, как правильно запрограммировать это, то я был бы очень рад получить помощь.
Что вопрос? – Barry
Вопрос в том, как строка с функцией 'splice()' написана правильно. – jkl
Когда я отлаживаю, я получаю 'error C2664', что второй параметр' listEntry' не может быть преобразован в 'std :: list <_Ty> &'. – jkl