zoukankan      html  css  js  c++  java
  • C++学习之容器的摸索

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

    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。乱了顺序是不行的

    请看下面一段代码:

      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 }

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

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

    3.vector和deque类型迭代器支持的操作

      iter + n  在迭代器上加(减)整数值n,将产生指向容器前面(后面)第n个元素的迭代器

      iter - n

      iter1 += iter2  这是迭代器加减法的符合预算:将iter1加上或减去iter2的预案算结果赋给iter

      iter1 -= iter2

      iter1 - iter2  连个迭代器的减法,其运算结果加上右边的迭代器既得左边的迭代器,这两个迭代器必须指向同一个容器中的元素或超出容器末端的下一位置。只适用于vector和deque容器

      >,<,>=,<=  迭代器的关系操作符。当一个迭代器指向的元素在容器中位于另一个迭代器指向的元素之前,则前一个迭代器小于后一个迭代器。关系操作符的两个迭代器必须指向同意容器的元素或超出容器末端的下一个位置。只适用于vector和deque容器

  • 相关阅读:
    export default 和 export 的使用方式(六)
    webpack结合vue使用(五)
    webpack 中导入 vue 和普通网页使用 vue 的区别(四)
    普通组件定义渲染和render渲染组件的区别(三)
    代码规范
    vue切换路由时,取消所有axios请求
    JS设计模式-策略模式
    CSS世界(张鑫旭)系列学习总结 (五)内联元素与流
    Vue中Jsx的使用
    Vue事件总线(EventBus)
  • 原文地址:https://www.cnblogs.com/zhuwbox/p/3608630.html
Copyright © 2011-2022 走看看