对vector的理解

这篇博客介绍了C++中的vector,它是一个动态数组,支持随机访问且能存放任意类型对象。文章详细阐述了vector的基本操作,如构造、添加、删除元素以及遍历方法,包括push_back()、insert()、erase()、clear()、pop_back()和size()等成员函数的使用。

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的大小。等等…

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值