我想把列表前面的值放到另一个列表中但是我收到错误。
为exmaple
List<int> li;
List<int> li2;
.............
.............
li2.push_back(li.front()); // this statement doesnt work for me.
有人可以帮帮我吗。
示例代码:
list<int> li;
list<int> li2;
li.push_back(1);
li.push_back(2);
li.push_back(3);
for(int i=0;i<3;i++)
{
cout<<li.front()<<endl;
li2.push_back(li.pop_front());
}
答案 0 :(得分:8)
pop_front()
只删除列表中的第一个元素。它不会返回元素。
您需要致电front()
以获取元素,然后调用pop_front()
将其从列表中删除:
li2.push_back(li.front());
li.pop_front();
答案 1 :(得分:4)
另外,请注意,当列表为空时,pop_front()和pop_back()将抛出异常 - 导致分段错误。因此必须检查列表的大小
一世。直接 - 使用列表功能
ii。直接使用程序中显示的for循环。
#include <iostream>
#include <list>
using namespace std;
int main( int argc, char *argv[])
{
list<int> li;
li.pop_front();
return 0;
}
-laptop:〜/ Study / Pgm $ ./test
分段错误
我认为这是所有操作系统中的行为,我在Linux平台上使用g ++(4.4.1)。
答案 2 :(得分:2)
嗯...至少基于你看起来想要完成的事情,看起来list.splice可能是适合这项工作的正确工具:
std::list<int> li, li2;
li.push_back(1);
li.push_back(2);
li.push_back(3);
li2.splice(li2.end(), li, li.rend(), li.rbegin());
事实上,splice
是使用std::list
的几个充分理由之一。