Я пытаюсь присоединиться к простым спискам символов вместе по одному элементу за раз, чтобы создать новый список. Например, если listA = 1,2,3,4,5 и listB = a, b, c, d, e, f, listC = a, 1, b, 2, c, 3 и т. Д.Как увеличить итератор внутри тела for цикла C++
I have a function taking in two char list, but I'm not able to increment the iterators from list A and B without receiving a compiler error.
My code is as follows:
void altFusion(std::list<char> listOne, std::list<char> listTwo) {
std::list<char>::iterator iter;
std::list<char>::iterator nextIter;
iter = listOne.begin();
nextIter = listTwo.begin();
std::list<char>newList;
char temp = *iter;
char temp2 = *nextIter;
for (int i = 0; i < 10; i++) {
newList.push_back(temp);
newList.push_back(temp2);
++iter;
++nextIter;
}
std::list<char>::iterator newListIter;
for (newListIter = newList.begin(); newListIter != newList.end(); ++newListIter) {
std::cout << *newListIter;
}
}
Если мне не разрешено увеличивать мой итератор внутри тела цикла for, как я должен?
Если я удаляю ++ iter и ++ nextIter, программа работает, но ответ нежелателен. (a, 1, a, 1, a, 1, a, 1 ...)
Благодарим за помощь!
Я вижу, как вы увеличиваете свой список с помощью std :: advance(), есть ли причина, по которой вы используете это, и почему использование pre и post (++) не работает? Является ли это проблемой? Я еще не пробовал ваше решение. –
std :: advance просто увеличивает итератор на n элементов. если он отрицательный, он уменьшается. –
ваш код теперь работает из-за этого.newList.push_back (temp); newList.push_back (temp2); –