List 如何在for循环体c++;

List 如何在for循环体c++;,list,for-loop,iterator,concatenation,increment,List,For Loop,Iterator,Concatenation,Increment,我试图一次将一个元素加入到简单的字符列表中,以创建一个新的列表。例如,如果listA=1,2,3,4,5,listB=a、b、c、d、e、f,listC=a、1、b、2、c、3等 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 foll

我试图一次将一个元素加入到简单的字符列表中,以创建一个新的列表。例如,如果listA=1,2,3,4,5,listB=a、b、c、d、e、f,listC=a、1、b、2、c、3等

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;
    }
}
我有一个接受两个字符列表的函数,但是如果不收到编译器错误,我无法从列表a和B中增加迭代器。
我的代码如下:
void altFusion(标准::列表一,标准::列表二){
标准::列表::迭代器iter;
std::list::迭代器nextIter;
iter=listOne.begin();
nextIter=listwoo.begin();
std::listnewList;
碳温度=*iter;
char temp2=*nextIter;
对于(int i=0;i<10;i++){
新列表。推回(临时);
newList.push_back(temp2);
++iter;
++Nextite;
}
std::list::iterator newListIter;
for(newListIter=newList.begin();newListIter!=newList.end();++newListIter){

std::我能看到您使用std::advance()在列表中递增吗?您使用这个的原因是什么?为什么使用pre和post(++)不起作用?这是一个范围问题吗?我还没有尝试过你的解决方案。std::advance只是将迭代器增加n个元素。如果是负数,它将减少。因此,你的代码现在可以工作了。newList.push_back(temp);newList.push_back(temp2);将这两行移到for循环中,然后再将_向后推。char temp=*iter;char temp2=*nextIter;我不知道如何删除注释。上面的注释应该表明,您的代码因此无法工作。我看到您使用std::advance()在列表中递增。您使用此选项的原因是什么,以及为什么使用pre和post(++)不起作用?这是一个范围问题吗?我还没有尝试过你的解决方案。std::advance只是将迭代器增加n个元素。如果是负数,它将减少。因此,你的代码现在可以工作了。newList.push_back(temp);newList.push_back(temp2);将这两行移到for循环中,然后再将_推回。char temp=*iter;char temp2=*nextIter;我不知道如何删除注释。上面的注释应该表明您的代码因此无法工作。
#include <iostream>
#include <vector>
#include <list>
#include <iterator>

using namespace std;
std::list<char> listA = {'1','2','3','4','5'};
std::list<char> listB = {'a','b','c','d','e'};
        //listC = a,1,b,2,c,3 etc...
int main()
{

    std::list<char> new_list;

    for (auto iterator = listA.begin(), end = listA.end(); iterator != end; ++iterator)
    {
        // get current index
        int index = std::distance(listA.begin(), iterator);
        // insert item from list a
        new_list.push_back(*iterator);

        // listb item
        auto it = listB.begin();
        std::advance(it, index);

        new_list.push_back( *it);

    }

    for (auto n : new_list)
    {
        std::cout << n << std::endl;
    }
    return 0;
}
newList.push_back(temp);
newList.push_back(temp2);