• [C++] std::vector 使用


    什么是vector. 一个封装良好的变长数组,是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。

    vector的使用样例:

    1.需要#include <vector>

    2.使用std声明std::vector

    3.使用vector<Type> vec() 声明vector的容量大小(声明3个单位的容量,vec(3),执行vec[4] = 3,报错,越界错误)

      创建vector对象,vector<int> vec;

    4.尾部插入数字:vec.push_back(a);

    5.使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。

    6.使用迭代器访问元素.

    vector<int>::iterator it;
    for(it=vec.begin();it!=vec.end();it++)
        cout<<*it<<endl;

    7.插入元素:    vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

    8.删除元素:    vec.erase(vec.begin()+2);删除第3个元素

      vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

    9.向量大小:vec.size();

    10.清空:vec.clear();

    执行:

     1 #include <iostream>
     2 #include <vector>
     3 #include <string>
     4 
     5 using namespace std;
     6 
     7 const int NUM = 5;
     8 
     9 int main()
    10 {
    11     vector<int> vec1(NUM);
    12     vector<int> vec2(NUM);
    13 
    14     int i;
    15     for(int i = 0; i < NUM; i++)
    16     {
    17         vec1[i] = i * 5;
    18         vec2[i] = i + 3;
    19     }
    20 
    21     for(int i = 0; i < NUM; i++)
    22     {
    23         cout<<"vec1:"<<vec1[i]<<"	vec2:"<<vec2[i]<<endl;
    24     }
    25     return 0;
    26 }

    结果:

    1 vec1:0    vec2:3
    2 vec1:5    vec2:4
    3 vec1:10    vec2:5
    4 vec1:15    vec2:6
    5 vec1:20    vec2:7

    对vec的基本操作:

     1 #include<iostream>
     2 #include<vector>
     3 #include<algorithm>
     4 
     5 using namespace std;
     6 
     7 void printVector(vector<int> vec)
     8 {
     9     for (int i = 0; i < vec.size(); i++)
    10     {
    11         cout<<vec[i]<<"   ";
    12     }
    13     cout<<endl;
    14 }
    15 
    16 bool compare(int &a, int &b)
    17 {
    18     return a>b;
    19 }
    20 
    21 int main()
    22 {
    23     vector<int> vec;
    24 
    25     cout<<"vector size():"<<vec.size()<<endl;
    26     for (int i = 0; i < 10; i++)
    27     {
    28         vec.push_back(i);  //vec尾部压入i数据
    29     }
    30     cout<<"vector size():"<<vec.size()<<endl;
    31 
    32     printVector(vec);
    33 
    34     //删除第一个元素
    35     vec.erase(vec.begin());
    36     printVector(vec);
    37 
    38     vec.insert(vec.begin(),23);  //在vec的头部插入23
    39     vec.insert(vec.end()-1,4,44);  //在vec的倒数第二个的数后面插入4个44
    40     printVector(vec);
    41 
    42     //获取指定位置的元素
    43     cout<<"vec.at(0) ->"<<vec.at(0)<<endl;
    44     cout<<"vec.at(1) ->"<<vec.at(1)<<endl;
    45 
    46     cout<<"vec.front() ->"<<vec.front()<<endl;  //vec 第一个元素
    47     cout<<"vec.back() ->"<<vec.back()<<endl;  //vec 最后一个元素
    48 
    49     cout<<"翻转之前:"<<endl;
    50     printVector(vec);
    51     reverse(vec.begin(), vec.end());
    52     cout<<"翻转之后:"<<endl;
    53     printVector(vec);
    54     
    55     sort(vec.begin(),vec.end());
    56     cout<<"排序之后:"<<endl;
    57     printVector(vec);
    58 
    59     cout<<"逆序排序:"<<endl;
    60     sort(vec.begin(),vec.end(),compare);
    61     printVector(vec);
    62 
    63     int v;
    64     cin>>v;
    65     return 0;
    66 }

    结果:

    使用reverse, sort函数,需要头文件#include<algorithm>

  • 相关阅读:
    IDT 信息设计工具使用
    子查询
    分组函数
    多表查询
    单行函数
    基本的sql-select语句
    final关键字的使用
    非静态代码块(非static初始化块)&静态代码块(static初始化块)
    单例模式的饿汉式实现
    static关键字的应用
  • 原文地址:https://www.cnblogs.com/vokie/p/4031360.html
Copyright © 2020-2023  润新知