zoukankan      html  css  js  c++  java
  • c++STL系列之Vector

    开头总结:

    C++中STL的概念总结:

    1、容器 

    2、迭代器

    STL中所有的不同库都是容器的概念体现,基本操作都是基于迭代器的操作。

    Vector介绍:

    vector是表示可变大小数组的序列容器。简单来说,vector就是一种内存动态变化的数组,和普通数组相比,它的优点在于不必提前设定初始化大小,既不存在内存溢出的安全问题。它和普通数组一样,也是在连续的内存中进行存储数据,所以它也可以使用下标去使用对应的数组元素。

    Vector用法:

    1、头文件

    #include <vector>
    

    2、定义

    vector<int> vec;		//声明一个int型向量
    vector<int> vec(5);		//声明一个初始大小为5的int向量
    vector<int> vec(10, 1);	//声明一个初始大小为10且值都是1的向量
    vector<int> vec(tmp);	//声明并用tmp向量初始化vec向量
    vector<int> vec1(vec.begin(), vec.begin() + 3);	//用向量vec的第0个到第2个值初始化vec1
    vector<vector<int>>vec;   //声明一个int型二维数组
    

    3、基本用法

    vec.push_back(5); //在a的最后一个向量后插入一个元素,其值为5
    vec.clear(); //清空 a中的元素
    vec.empty(); //判断 a是否为空,空则返回ture,不空则返回false
    vec.pop_back(); //删除 a向量的最后一个元素
    vec.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4
    vec.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5
    vec.begin();//开始指针
    vec.end(); //末尾指针,指向最后一个元素的下一个位置
    vec.cbegin(); //指向常量的开始指针,意思就是不能通过这个指针来修改所指的内容,但还是可以通过其他方式修改的,而且指针也是可以移动的。
    vec.cend();//指向常量的末尾指针:
    vec.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4
    vec.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5
    
     * 迭代输出:
     * for(ite=nums.begin();ite!=nums.end();++ite)
     *          cout<<*ite<<" ";
    

      

    4、高阶用法(运用迭代器思想)

    count(vec.begin(),vec.end(),100);//统计100出现的次数
    
    //删除指定位置元素(按索引)
    vec.erase(vec.begin()+s);//删除位置为s的数
    
    //删除一个数,后面的往前移动(按值删除)
    vector<int>::iterator it = find(nums.begin(),nums.end(),3);
        nums.erase(it);
    find(a.begin(),a.end(),10)//查找返回迭代器的索引位置
    sort(vec.begin(),vec.end())//排序
    reverse(vec.begin(),vec.end())//翻转
    copy(v1.begin(), v1.end(), v2.begin()); //全部拷贝
    
        ###########
    vector<int>::iterator loc = find(nums.begin(), nums.end(), target);得到位置
    loc - nums.begin()得到位置的索引
        ###########
    unique(nums.begin(),nums.end())去除重复项,unique()函数将重复的元素放到vector的尾部,然后返回指向第一个重复元素的迭代器再用erase函数擦除从这个元素到最后元素的所有的元素
    

    5、makepair,将键值对插入到Vector中

    //pair将一对值组合成一个值,两个值可以分别用pair的两个公有函数 first和 second访问。
    //makepair的用法,由传递给它的两个实参生成一个新的pair对象
    //声明 vector<pair<char, string>> records;
    records.push_back(make_pair(op, phone));//插入pair
    

    6、二维vector用法总结

    vector<vector<int>> temp;//定义二维数组
    vector<vector<int>> temp (10, vector<int>(8)); //10行8列,全部初始化为零
    //使用resize方法来对二维数组进行初始化
    vector<vector<int>> vec;
    res.resize(r);//r行
    for (int k = 0; k < r; ++k)
    {
          res[k].resize(c);//每行为c列
     }
    	    
    

      

  • 相关阅读:
    QTP 处理webtable中的数据
    Error 1406.Setup cannot write the value Microsoft
    QTP打开WinTree中的指定节点
    Excel数据操作
    VBS中实现函数多返回值
    QTP的回放模式
    VBS中运行应用程序的两种方式及WshShell对像浅析
    程序员奇葩面试的奇葩问题
    Android如何实现毛玻璃效果之Android高级模糊技术
    Android通过用代码画虚线椭圆边框背景来学习一下shape的用法
  • 原文地址:https://www.cnblogs.com/wobushangwangl/p/14025982.html
Copyright © 2011-2022 走看看