首页 > 编程语言 > 详细

C++学习之容器的摸索

时间:2014-03-19 05:36:45      阅读:361      评论:0      收藏:0      [点我收藏+]

初学容器,容易犯错的地方

1.vector,list和deque都是顺序容器。其中vector和deque都可以通过下标访问,而list不能

2. 容器的begin和end操作

  c.begin()返回一个迭代器,它指向容器c的第一个元素

  c.end()返回一个迭代器,它指向容器c的最后一个元素的

  c.rbegin()返回一个逆序迭代器,它指向容器c的最后一个元素

  c.rend()返回一个逆序迭代器,它指向容器c的第一个元素的前面一个元素

  注意以上操作的返回的迭代器类型,前两个是iterator,后面一个是reverse_iterator。乱了顺序是不行的

请看下面一段代码:

bubuko.com,布布扣
  1 #include <iostream>
  2 #include <vector>
  3 #include <list>
  4 #include <deque>
  5 #include <string>
  6 using namespace std;
  7 
  8 int main()
  9 {   
 10     int i = 0;
 11     char *words[] = {"stately","plump","buck","mulligan"};
 12     size_t words_size = sizeof(words) / sizeof(char *);
 13     cout << "数组大小:" << words_size << endl;
 14     vector<string> words2(words,words+words_size);
 15     cout << "我采用迭代器的方式逆序访问容器:" << endl;
 16     for(vector<string>::reverse_iterator it=words2.rbegin();it!=words2.rend(    );++it)
 17     {   
 18         cout << "list容器内内容为:"<< *it << endl;
 19     }
 20     cout << "现在采用容器大小的方式访问容器:" << endl;
 21     for(i = 0;i < words2.size();++i)
 22     {   
 23         cout << "list容器内内容为:" << words2[i] << endl;
 24     }
 25     return 0;
 26 }
bubuko.com,布布扣

上面的代码如果将vector换成deque是没问题的,但是如果换成list程序就会出错,这就验证了1.

如果将reverse_iterator换成iterator,则程序也会出错,那时因为没注意到2.

C++学习之容器的摸索,布布扣,bubuko.com

C++学习之容器的摸索

原文:http://www.cnblogs.com/zhuwbox/p/3608630.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!