首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于list的iterator和遍历,该如何解决

2012-02-15 
关于list的iterator和遍历看书上说iterator的算术加减不支持list,因为list不是使用连续的内存来存储元素.

关于list的iterator和遍历
看书上说iterator的算术加减不支持list,因为list不是使用连续的内存来存储元素.如果不支持,那

[code=C/C++][/code]
list<string>a(10,"abc");
for(list<string>::iterator b=a.begin;b!=a.end();b++)

上面的遍历应该是不正确的。如果不正确,那应该用什么来遍历?

[解决办法]
你就不能自己编译试一下?so 懒?

[解决办法]
支持遍历
[解决办法]
谁说不正确了!

C/C++ code
list <string>a(10,"abc"); for(list <string>::iterator b=a.begin;b!=a.end();b++)
[解决办法]
怎么不可以,算术加减是指的iterator之间的加减吧,
#include <list>
using namespace std;

int main()
{
list<string>a(10,"abc"); 
for(list<string>::iterator b=a.begin();b!=a.end();b++) 
{
cout << *b << endl;
}
}
[解决办法]
我今天学用的list,我连书都没看,直接按vector用了
因为我看vector的时候上面说,能用在vector上的东西都 可以用在其它容器上。。
因为容器有共同的接口,不过有的容器有特殊的接口

[解决办法]
引用楼主 hahaysw 的帖子:
看书上说iterator的算术加减不支持list,因为list不是使用连续的内存来存储元素.如果不支持,那


list <string>a(10,"abc");
for(list <string>::iterator b=a.begin;b!=a.end();b++)

上面的遍历应该是不正确的。如果不正确,那应该用什么来遍历?

[解决办法]
探讨
先谢谢2位高手

#include <iostream>
#include <list>
#include <vector>
#include <string>
using namespace std;

int main()
{
list <string>a(10,"abc");
list <string>::iterator b=a.begin();
for(;b!=a.end();b++)
cout < <*b < <" ";
//如果不要下2行,程序是可以运行的。就是说iterator++可以用于从开始遍历list
//但是由于list不是连续的存储,所以不能随机访问元素.

热点排行