对vector的理解

vector介绍

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector随机访问的复杂度是O(1),插入数据的复杂度是 O(n)。对vector遍历通常有两种方式:通过下标、利用迭代器。

vector该怎么用?

定义和对应的输入、访问某一数据和删除vector:
C++ Vectors可以使用以下任意一种参数方式构造:

1、无参数 - 构造一个空的vector

#include <iostream>
#include<vector>
using namespace std;
int main()
{
    //1、定义了一个空的vector "v"
    vector<int> v;
    for (int i=0;i<5;i++){
        v.push_back(i);//
    }
    int m=v.at(3); //当我想输出7(并不存在)时,编译器会报错。
    cout<<m<<endl;
    for(int i=1;i!=v.size();i++)//这里我用codeblocks他会出waring,但如果我把int换成vector<int>::size_type,就不会报,因为size_type 相当于 unsigned int类型,使用size_type 主要是为了适应不同的平台,int 类型大小会根据不同平台而不同
        cout<<v[i]<<" ";
    return 0;
}

2、数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector

#include <iostream>
#include<vector>
using namespace std;
int main()
{
    //第二种定义方法
    vector<int> v(5,3);//构造5个值为3
    int m=v.at(3); //当我想输出7(并不存在)时,编译器会报错。
    cout<<m<<endl;
    for(int i=1;i!=v.size();i++)
        cout<<v[i]<<" ";
    return 0;
}

3、vector(from) - 构造一个与vector from 相同的vector
4、迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间).(这两个不太懂,以后遇见补上)

vector添加数据的方法有两种:

1、一种是在尾部添加元素,使用的函数是push_back()函数:

#include <iostream>
#include<vector>
using namespace std;
int main()
{
    //1、定义了一个空的vector "v"
    vector<int> v;
    for (int i=0;i<5;i++){
        v.push_back(i);//
    }
    int m=v.at(3); //当我想输出7(并不存在)时,编译器会报错。
    cout<<m<<endl;
    for(int i=1;i!=v.size();i++)//这里我用codeblocks他会出waring,但如果我把int换成vector<int>::size_type,就不会报,因为size_type 相当于 unsigned int类型,使用size_type 主要是为了适应不同的平台,int 类型大小会根据不同平台而不同
        cout<<v[i]<<" ";
    return 0;
}

2、另一种是在指定位置插入元素,使用到的函数是insert()函数。

#include <iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int> v;
    v.insert(v.begin(),10);//在开始之前,插入10
    for (vector<int>::size_type i=1;i<5;i++){
        v.push_back(i);
    }
    for(vector<int>::size_type i=0;i!=v.size();i++)
        cout<<v[i]<<" ";
    return 0;
}

用迭代器在数据之间插入数据:

#include <iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int> v;
    for (vector<int>::size_type i=1;i<5;i++){
        v.push_back(i);
    }
    vector<int>::iterator t;
    for(t=v.begin();t!=v.end();t++){
        if(*t==3)
        {v.insert(t,9);//在3之前,插入10
        break;} //找到了一定要break;否则会死循环
    }
    for(vector<int>::size_type i=0;i!=v.size();i++)
        cout<<v[i]<<" ";
    return 0;
}

还可以用erase()删除某一元素

#include <iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int> v;
    for (vector<int>::size_type i=1;i<5;i++){
        v.push_back(i);
    }
    vector<int>::iterator t;
    for(t=v.begin();t!=v.end();t++){
        if(*t==3)
        {v.erase(t);//删除第三个数
        break;} //找到了一定要break;否则会死循环
    }
    for(vector<int>::size_type i=0;i!=v.size();i++)
        cout<<v[i]<<" ";
    return 0;
}

还有clear(),清空vector中的所有元素。
pop_back(),删除末尾的元素。
size(),返回的是vector的大小。等等…

发布了36 篇原创文章 · 获赞 1 · 访问量 1407

猜你喜欢

转载自blog.csdn.net/atnanajiang/article/details/103519124