c++ vector用法详解

1.概述

对于C++编程语言而言,stl库是一个非常重要的库,其中的vector容器可以说是使用频率极高的一个容器。本文将系统性地介绍vector容器的用法。

2.vector容器的定义

vector容器是一个封装了动态大小数组的顺序容器,它能够存储任意类型的元素。同样是连续的内存空间,但vector容器的大小可以根据需要进行动态增长或缩小。

2.1 vector的定义

我们可以通过以下代码来定义一个vector容器:

#include <vector>

using namespace std;

vector<int> vec; //定义一个空的vector容器

2.2 vector容器的初始化

vector容器的初始化方式如下:

vector<int> vec1; //不带参数的构造函数

vector<int> vec2(10); //带一个参数,所有元素的值为0

vector<int> vec3(10, 1); //带两个参数,所有元素的值均为1

vector<int> vec4{1, 2, 3}; //使用初始值列表初始化

vector<int> vec5(vec4); //使用另一个vector容器初始化

3.vector容器的访问和遍历

3.1访问vector中的元素

可以使用[]操作符访问vector中的元素:

vector<int> vec{1,2,3,4,5};

for(int i=0;i<vec.size();i++){

cout<<vec[i]<<" ";

}

以上代码中,使用size()方法获取了vector的大小。我们可以使用vector提供的at()方法获取元素:

vector<int> vec{1,2,3,4,5};

for(int i=0;i<vec.size();i++){

cout<<vec.at(i)<<" ";

}

3.2使用迭代器遍历vector

迭代器提供了一种通用的方式来遍历容器。我们可以使用以下方式来遍历vector:

vector<int> vec{1,2,3,4,5};

for(auto it=vec.begin();it!=vec.end();it++){

cout<<*it<<" ";

}

以上代码中,使用begin()方法获取vector容器的首地址。end()方法获取vector容器的末尾地址,使得迭代器可以遍历整个vector。事实上,begin()和end()方法也可以使用const_iterator类型来声明。

4.vector容器的属性和方法

4.1获取vector容器的大小

可以使用size()方法获取vector容器的大小:

vector<int> vec{1,2,3,4,5};

cout<<"vector容器的大小为:"<<vec.size();

4.2向vector容器中添加元素

可以使用push_back()方法向vector容器中添加元素:

vector<int> vec{1,2,3,4,5};

vec.push_back(6); //向vector容器中添加元素6

4.3删除vector容器中的元素

可以使用erase()方法删除vector容器中的元素,该方法的参数可以是迭代器、区间、以及某个值。以下是两个示例:

//删除vector容器中的元素,方法一:

vector<int> vec{1,2,3,4,5};

vec.erase(vec.begin()+2); //删除第三个元素

for(auto it=vec.begin();it!=vec.end();it++){

cout<<*it<<" ";

}

//删除vector容器中的元素,方法二:

vector<int> vec{1,2,3,4,5};

auto it=vec.begin();

while(it!=vec.end()){

if(*it%2==0)

it=vec.erase(it); //删除偶数

else

it++;

}

for(auto it=vec.begin();it!=vec.end();it++){

cout<<*it<<" ";

}

4.4获取vector容器的第一个元素和最后一个元素

可以使用front()方法和back()方法获取vector容器的第一个元素和最后一个元素:

vector<int> vec{1,2,3,4,5};

cout<<"vector容器的第一个元素为:"<<vec.front()<<endl;

cout<<"vector容器的最后一个元素为:"<<vec.back();

4.5将vector容器的元素排序

可以使用sort()方法将vector容器的元素排序:

vector<int> vec{5,4,3,2,1};

sort(vec.begin(), vec.end()); //默认升序排序

for(auto it=vec.begin();it!=vec.end();it++){

cout<<*it<<" ";

}

5.总结

本文介绍了vector容器的定义、初始化、访问和遍历、属性和方法等方面的知识,以及一些vector常用的操作。掌握vector容器的使用,将有利于我们更好地进行程序设计。

后端开发标签