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