还是stl的问题,又蒙了。。。。求指点
list<int> ilist(10); int j = 1; for (list<int>::size_type i = 0; i < ilist.size(); i++) { ilist[i] = j++; }
报错!!error C2676: binary '[' : 'std::list<_Ty>' does not define this operator or a conversion to a type acceptable to the predefined operator
1> with
1> [
1> _Ty=int
1> ]
求指教。。。。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
但是C++primer上有的啊。。。。我在vs2005上。
stl list 在哪里看到能通过下标访问
list的特性就决定了不能用下标来访问,当然重载一个[]来简化使用是另外一回事.但从语义上来讲是有歧义的.
受教了,对于一个菜鸟,要有一颗激情的心,无论有多少问题,都要勇往直前!!
在源码里面没看到list有重载[],而且你的VS也是报的找不到[]操作符的错误。C++ primer里面是如何具体定义的,第几版的哪一章内容?
no match for 'operator[]' in 'ilist[i]'
但是我同样的程序,只是换成vector却可以,list我看了是有[]操作符的啊,为什么在这里有问题了
vector在内存中是连续存放的,所以list没有定义[]操作符
如果两个都是一样的还要区分vector和list干嘛 vector相当于数据组,但不是数组 list相当于链表,
list在内存空间不是连续存放的吧,一般是用迭代器iterator
检查list是否重载了[] 操作符
提供了。
记住[]要以随机迭代器的支持,list的迭代器是随机迭代器么?
list提供[]么?