注册 登录
编程论坛 C++教室

list容器输出有错误

fl8962 发布于 2014-04-08 05:33, 343 次点击
#include<iostream>
#include<string>
#include<list>
#include<vector>
using namespace std;
int main()
{
  string sa[3]={"abc","bbc","abd"};
  int i=0;
  while(i<3)
  {
    cout<<sa[i]<<endl;
    i++;
  }
  i=0;
  list<string>::iterator p;
  list<string> slist(sa,sa+3);
 p=slist.begin();
  for(;p!=slist.end();++p)//为什么list容器只能这么输出?
  {
    cout<<*p<<endl;

  }
   i=0;
  list<string> slist2(sa,sa+3);
  list<string>::iterator q;
  q=slist2.begin();
  while(i<3)
  {
    cout<<*(q+i)<<endl;//这样输出list容器内的内容为什么不行?
    i++;
  }
  i=0;
  vector<string> slist3(sa,sa+3);
  vector<string>::iterator m;
  m=slist3.begin();
  while(i<3)
  {
   cout<<*(m+i)<<endl;
   i++;
  }

  return 0;
}
4 回复
#2
rjsp2014-04-08 08:13
list的迭代器不是随机迭代器,不重载operator+就是防止你们滥用。
如果一定需要类似的功能,可以用 std::advance
#3
lonely_212014-04-08 10:45
cout<<*(q+i)<<endl;//这样输出list容器内的内容为什么不行?
迭代器本身就是个对象,而这个对象没有重载operator+,所以你这样用不了咯
#4
fl89622014-04-08 23:44
回复 2楼 rjsp
thanks a lot
#5
fl89622014-04-08 23:44
回复 3楼 lonely_21
thanks
1