读书人

如何输出list容器里的所有元素

发布时间: 2013-07-01 12:33:04 作者: rapoo

怎么输出list容器里的所有元素?
发现list.begin()+2就会报错,是不是list的迭代器不能用加法?
[解决办法]
迭代器能用加法。但一般不是像你这样使用。如果要遍历list中的所有元素,可以按如下方式:

// 其中CList为list的类型
for ( CList::iterator it=list.being(); it!=list.end(); ++it)
{
......
}

[解决办法]
list不能像vector那样使用迭代器的加法,因为加法在list里实现得很慢,为了不让你认为list加法是很好用的,于是写list的人就禁止了这样的用法。输出的话,见上楼。
[解决办法]
是不能这样用。。因为iterator没有重载operator+,只重载了operator++。。。
[解决办法]
引用:
发现list.begin()+2就会报错,是不是list的迭代器不能用加法?


只有随机迭代器才支持。list的迭代器是双向迭代器。可以看看这里:http://www.cplusplus.com/reference/iterator/
[解决办法]
引用:
发现list.begin()+2就会报错,是不是list的迭代器不能用加法?


coyp( std::list.begin(), std::list.end(), std::ostream_iterator< list的元素类型 >( std::cout , "\n" );

list的迭代器是不能使用整数加减法的,因为list的迭代器不是随机迭代器,只是双向迭代器;此外也不能进行除==和!=之外的比较。
[解决办法]
即便是这样,也会存在vector。
表现一致,内在也有差别。

引用:
如果list可以这样用的话就不会存在vector了。

[解决办法]
依次遍历吧。

读书人网 >C++

热点推荐