作者hardware (硬体)
看板C_and_CPP
标题[问题] C++ list容器元素相加
时间Wed Dec 9 21:32:43 2015
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux G++
程式码(Code):(请善用置底文网页, 记得排版)
#include <iostream>
#include <list>
using namespace std;
main()
{
int count =1;
list<int> L;
L.push_back(0);
L.push_front(0);
L.insert(++L.begin(),2);
L.push_back(5);
L.push_back(6);
L.sort();
list<int>::iterator i;
for(i=L.begin(); i != L.end(); ++i)
{
cout << "第" << count << "个 "<< *i << " "<< endl;
count++;
}
return 0;
}
我们都知道用 iterator去观看list所有的元素。
也可以用 L.front();去看第一个元素,
但有什麽方法可以看第二个元素?
谢谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.117.89.77
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1449667965.A.175.html
※ 编辑: hardware (140.117.89.77), 12/09/2015 22:00:30
1F:→ bibo9901: *( L.begin() + 1 ) 12/09 22:08
2F:→ jaid: 你想++i不就是在加iterator吗 index直接加上去就好了 12/09 23:28
3F:→ Caesar08: 你既然知道iterator,那就应该知道list的iterator是 12/09 23:55
4F:→ Caesar08: bidirectional iterator,那就应该知道他只能从begin() 12/09 23:56
5F:→ Caesar08: 往後面取一个,才有办法拿到第二个元素才对 12/09 23:56
iterator是去查看元素,如果我今天要把他储存下来呢?
for(i=L.begin(); i != L.end(); ++i)
{
cout << "第" << count << "个 "<< *i << " "<< endl;
sum = *i;
count++;
}
我用这样子为什麽不行?
6F:→ stupid0319: 可以的话,自己的容器自己写会比较好操作吧 12/10 00:41
7F:推 kwpn: 用iterator就做的到的事,干嘛浪费时间自己写容器 12/10 00:54
8F:→ hardware: 1F ,你说的方法好像不行耶 12/10 09:34
※ 编辑: hardware (140.117.89.77), 12/10/2015 09:38:10
9F:→ remizu: 看你写sum应该是想要算总和吧 "="是指派给sum 不是加上去 12/10 09:46
抱歉,写错了应该是
sum = sum + *i;
谢谢~
10F:推 aiwhat: 查了一下 std::advance 可能是你要的 12/10 10:09
※ 编辑: hardware (140.117.89.77), 12/10/2015 10:20:23
11F:→ hardware: 感谢楼上~ 12/10 10:20
12F:→ Caesar08: 个人认为next比advance还好用,不过它属於C++11的部分 12/10 12:24