C++STL之动态数组vector

vector数组常用函数

vectorv 创建动态数组v,后面可以加{}或()进行初始化
type v[index] 获取v中第 index 个元素 O(1)
v.push_back(type item) 向v后⾯添加⼀个元素item O(1)
v.pop_back() 删除 v 最后⼀个元素 O(1)
v.size() 获取 v 中元素个数,返回size_type类型 O(1)
v.resize(int n) 把 v 的⻓度设定为 n 个元素 O(n)
v.empty() 判断 v 是否为空,空返回1,不空返回0,O(1)
v.clear() 清空 v 中的元素 O(size)
v.insert(iterator it,type x)向迭代器it指向元素前增加一个元素x,O(n)
v.erase(iterator it) 删除向量中迭代器指向元素,O(n)
v.front()返回首元素的引用O(1)
v.back()返回尾元素的引用O(1)
v.begin()返回首迭代器,即得到数组头的指针,指向第一个元素O(1)
v.end()返回尾迭代器,即得到数组最后一个单元+1的指针,指向向量最后一个元素的下一个位置O(1)

vector数组的创建

//vector的创建
#include 
using namespace std;
int main()
{
    vectorv1;
    //创建一个存int类型的动态数组,int可以改成其它类型
    vectorv3(20);
    //创建一个存long long类型的动态数组,长度为20,v[0]~v[19]默认为0
    vectorv4(20,"zzuacm");
    //创建一个存string类型的动态数组,长度为20,存的都是"zzuacm"
    vectorv5[3];
    //相当于存int的二维数组,一共3行,每行的列可变
    vector >v5{{1,2},{1},{1,2,3}};//注意两个> >之间要加空格,否则会在旧的编译器下(Dev)会报错
    //存int的二维数组,行和列都可变,初始状态
    return 0;
}

函数实例1

int main()
{
    vectorv;
    for(int i=1;i<=5;i++)
        v.push_back(i);//向动态数组中插入1~5
    cout<

函数实例2

int main()
{
    vectorv{0,1,2,3,4};
    v.erase(v.begin()+3);//删除v[3],v变为{0,1,2,4}
    v.insert(v.begin()+3,666);//在v[3]前加上666,v变成{0,1,2,666,3,4}
    v.front()=10;//将v[0]改成10,等同于v[0]=10;
    v.back()=20;//将v[4]改成20等同于v[v.size()-1]=20;
    for(int i=0;i

vector数组排序

#include 
#include 
#include 
#include 
using namespace std;
 
int main()
{
    vectorobj;
 
    obj.push_back(1);
    obj.push_back(3);
    obj.push_back(0);
 
    sort(obj.begin(),obj.end());//从小到大
 
    cout<<"从小到大:"<

二维数组

//方法一
#include 
#include 
#include 
#include 
using namespace std;
 
 
int main()
{
    int N=5, M=6; 
    vector > obj(N); //定义二维动态数组大小5行 
    for(int i =0; i< obj.size(); i++)//动态二维数组为5行6列,值全为0 
    { 
        obj[i].resize(M); 
    } 
 
    for(int i=0; i< obj.size(); i++)//输出二维动态数组 
    {
        for(int j=0;j
//方法二
#include 
#include 
#include 
#include 
using namespace std;
 
 
int main()
{
    int N=5, M=6; 
    vector > obj(N, vector(M)); //定义二维动态数组5行6列 
 
    for(int i=0; i< obj.size(); i++)//输出二维动态数组 
    {
        for(int j=0;j

你可能感兴趣的:(ACM算法,c++,容器,开发语言,算法,数据结构)