zoukankan      html  css  js  c++  java
  • STL 之 vector 用法

     

    一、头文件 #include<vector>

    二、常用方法:

    // 在这个向量的尾部插入x的考贝,平均时间为常数,最坏时间为O(n);

    1: void push_back(const T& x);

    比如:vector<string> fruits;

    fruits.pusb_back ("orange");

    fruits.push_back("apples");

    fruits.push_back("grapes");

    fruits.push_back("apples");

    那么向量fruits现在包含了下列顺序的项:"orange", "apples", "grapes",  "apples";

     

    //前置条件:迭代器位于向量头和向量尾后的下一个位子之间

    //后置条件:X的拷贝放入迭代器所指的位置; 调用前,每个大于等于该位置下标的位置一次向后移动;返回位于新插入位置的迭代器;O(n);

    2:  iterator insert(iterator position, const T& X);

    假设迭代器 ite 位于小标为2的位置上,实行操作:vector<cstring>::iterator new_ite = fruits.insert(ite, "kiwi");后 fruits 向量变为如下:

    "orange",  "apples",  "kiwi",  "grapes",  "apples";

    迭代器 new_ite 位于下标为2 的“kiwi”上; 并且 ite 失效(即:ite 不再存在 或 不确定其位置);

     

    //后置条件: 调用后向量尾部的项被删除;

    3: void pop_back();

    实行操作:fruits.pop_back();后 向量 fruits 如下:"orange",  "apples",  "kiwi",  "grapes";

     

    //前置条件:迭代器位于向量的某一项位置上;

    //后置条件:这次调用前位于迭代器上的项被删除; 调用后次迭代器下标后面的所有下标一次向前移动; O(n);

    4:  void erase (iterator position);

    如果迭代器 ite 位于项 “apples” 的位置,实行操作:fruits.erase(ite);后向量 fruits 如下:    "orange",  "kiwi",  "grapes";

    迭代器 ite 失效(即:ite 不再存在 或 不确定其位置);

    此外,void erase(iterator first, iterator last)还用一个拥有两个迭代器参数的版本----first和last, 所有在first(包括first)和 last(不包括 last)之间的项将被删除;

    若我们假设 fruits 向量中有项:"orange",  "apples",  "kiwi",  "grapes"; 并且 first 位于“apples”, last 位于 “grapes”上;

    执行操作:fruits.erase (first, last) 后向量 fruits 如下:"orange", “grapes";

    同样,迭代器 first 和 last 也要失效;

     

    // 返回向量中项的 个数;

    5: unsigned size ();

    继续接着 4 第一个erase() 后的操作执行:unsigned cnt = fruits.size(); 那么 cnt 将是 3;

     

    // 返回位于向量开头的迭代器

    6: iterator begin ();

    执行操作: vector <cstring> :: iterator ite = fruits.being();

    那么迭代器 ite 位于 项 “orange” 上;

     

    // 返回恰好位于位于向量最后一项的下一个位置,(注意不是在最后一个项的位置,而是其后

    7: iterator end();

    执行操作:

    vector <cstring>::iterator ite = fruits.end ();

    fruits.insert(ite, "lemons");

    向量fruits如下: "orange",  "kiwi",  "grapes",  "lemons";

     

    // 返回向量开头项的引用

    8: T& front()

    继续执行: cout << fruits.front(); 那么输出的是:“orange”;

     

    // 如果这个向量中不包含任何项,则返回 真, 否则返回假;

    9: bool empty ();

     

    // 清空向量中所有项

    10: void clear ();

    继续执行操作: fruits.clear (); 则向量法 fruits 建为空

     

    此外,对于数组的 [] 运算符 也完全使用与 vector  且方法完全一样,这里不再赘述;

  • 相关阅读:
    python入门:字符编码
    python入门:字符串2
    使用keepalived实现高可用
    基于sersync实现实时同步
    kubeadm 的工作原理
    docker-stop不能停止容器
    kubernetes 中的证书工作机制
    docker-hub中python的tag都代表什么意思
    MFS 介绍
    安装sngrep线路抓包工具
  • 原文地址:https://www.cnblogs.com/khan724/p/4080250.html
Copyright © 2011-2022 走看看