分享

C STL之vector

 长沙7喜 2019-10-19

        C++ STL的学习从vector入手,但是在正式使用STL的内容之前,要先在主函数前添加一句

using namespace std;

它的作用就是定义标示符,如果不加上这句代码就要在每句使用C++标准程序库的任何标识符时加上“std::”了。

比如说

std::string s = 'Hellow World!';
std::cout<<s<<std::endl;

如果主函数前加上了using namespace std;的话,这样就好了

string s = 'Hellow World!';
cout<<s<<endl;

怎么样比刚才好多了吧,所以不要偷懒,凡是要用到C++标准程序库的任何标识符,都要先加上这一句代码。

说了这么多,现在终于要说说vector了。

vector

不定长数组、变长数组

头文件:#include<vector>

定义:vector<typename>name;

(在刚刚以及接下来的STL容器的定义中所用的typename表示可以是任何基本类型,例如int、double、char,也可以是自定义结构体或STL容器,例如vector、string等)

元素访问:(现已定义vector<int>vi;)

  1. 下标访问  vi[0]、vi[1],这与一维数组的访问方式极像。

  2. 通过迭代器访问。 vi.begin()和vi[0]是等价的;vi.begin()+4和vi[4]也是等价的。

遍历:

  1. 下标访问

    for(int i = 0; i < vi.size(); i++)

  2. 迭代器访问

    for(vector<int>::iterator it = vi.begin(); it != vi.end(); it++)

看完了两种遍历方式想必你一定知道我推荐的是哪一种访问方式了,没错就是下标访问。

常用函数:

  1. push_back(x)

      在vector后面添加一个元素x,时间复杂度O(1)。

  2. pop_back()

     删除vector的尾元素,O(1)。

  3. size()

      获取vector中元素的个数。

  4. clear()

      清空vector中的所有元素,O(N)。

  5. insert(it,x)

      向vector的it迭代器处插入一个元素x,O(N)。

      例如,vi.insert(vi.begin()+2,-1);

              将-1插入到vi[2]的位置上。

  6. (1)erase(it)

         删除迭代器it处的元素,O(N)。

    (2)erase(first,last)

          删除[first,last)内所有的元素,O(N)。

          例如,vi.erase(vi.beegin()+1,vi.begin()+4);

                  删除vi[1],vi[2],vi[3].





    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多