0
新しいリストを作成するために、単純なcharリストを同時に1つの要素に結合しようとしています。たとえば、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()を使用してリストをインクリメントしていますが、これを使用している理由があり、なぜプレとポスト(++)を使用しても機能しないのですか?それは範囲の問題ですか? 私はあなたの解決策をまだ試していません。 –
std :: advanceはイテレータをn個の要素だけインクリメントします。否定的であればそれは減少する。 –
あなたのコードはthis.newList.push_back(temp)のために現在動作しています。 newList.push_back(temp2); –