zoukankan      html  css  js  c++  java
  • C++vector用法详细探索

    先讨论比较重要的函数

    #include <vector>
    #include <algorithm>    //后面相关函数需要包含的头文件
    1.正序排序
    sort(a.begin(),a.end());
    2.倒序排序
    sort(a.rbegin(),a.rend());
    3.不排序的倒置
    reserve(a.begin(),a.end()); //如a中为{1,3,4,2} 则倒置后为{2,4,3,1},

     一.添加元素(int举例)

    向vector添加元素方法
    1.int b{5}={1,2,3,4,5};
      vector<int>a;
      for (int i=0;i<5;i++)
      a.push_back(b[i]);
      
    2.int b[5]={1,2,3,4,5};
      vector<int>a(b,b+5);        //简单记:b为数组首地址,b+5:5为数组长度
      
    3.vector<int>a;
      for(int i=0;i<5;i++)
      a.push_back(i);

    二.输出方式

    1.for(int i=0;i<a.size();i++)    //类似于数组,注意使用a.size()计算a中元素长度
      cout<<a[i]<<" ";
    2.for(vector<int>::iterator it=a.begin();it!=a.end();it++)     //定义迭代器it指向vector的a
          cout<<*it<<" ";

    三.两个vector间的基本操作

    将一个vector中的元素传入到另一个vector中
    #include <iostream>
    using namespace std;
    #include <algorithm>
    #include <vector>
    int main()
    {   
        int b[4] = { 0,1,2,4 };
        int b1[4] = { 5,6,7,8 };
        vector<int>a(b,b+4);
        vector<int>c(b1, b1 + 4);
        for (vector<int>::iterator it = a.begin(); it != a.end(); it++)
            c.push_back(*it);
        for (vector<int>::iterator it = c.begin(); it != c.end(); it++)
            cout << *it << " ";
        system("pause");
        return 0;
    }

     四.较为常用的函数

    常用函数
    a.size()   //获取当前a中的元素长度
    a.back()   //返回a最后一个元素  可用cout输出
    a.front()  //返回a第一个元素    可用cout输出
    a.assign(4,2)  //表示a只含4个元素,每个元素都为2
    a.clear()      //清空a中的元素
    
    
    a.empty()     //判断a是否为空,空时返回true,非空返回false
    用法:if(!a.empty())  
          cout<<"a is NOT NULL";
    
    a.push_back(5)  //在a中最后插入一个5
    a.pop_back()   //删除a中最后一个元素
    a.insert(a.begin(),5) //表示在a.begin()位置插入5,不覆盖,元素后移
    a.insert(a.begin()+1,5) //表示在首元素后插入5,不覆盖,元素后移
    a.insert(a.begin(),4,5) //表示在第四个元素中插入5,不覆盖,元素后移(以这个为核心)
    
    vector<int>a;
    vector<int>b;
    a.swap(b)    //将a中的元素与b中的元素进行交换(整体性)

     五、容器删除指定元素(迭代器iterator)

    //以伪代码示例
    
    vector<string>book_name;
    for (vector<string>::iterator it = book_name.begin(); it != book_name.end(); )   //注意迭代器的用法
            if (*it == n)                    //注意是*it
            {
                it = book_name.erase(it);
                cout << "图书删除成功!" << endl;
            }
            else
                ++it;
  • 相关阅读:
    对拍
    311随笔
    精彩才刚刚开始
    做不下去了,就开心一下吧。
    情书
    论Sue这个人呐(=@__@=)
    P1113 杂务
    P1546 最短网络 Agri-Net
    P2009 跑步
    P2814 家谱
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/10835499.html
Copyright © 2011-2022 走看看