vector的接口介绍大全
- 一、vector的接口介绍
- 二、常用接口的使用
- 1. 定义vector
- 2. vector赋值操作
- 3. 迭代器
- 4. 容量操作
- resize
- reserve
- 5. 访问元素
- [] front back at
- 6. 修改容器
- assign
- push_back pop_back
- insert
- erase
- clear
- 7. 容器的其他操作
- swap
vector 是 C++ 标准模板库(STL)中最常用的动态数组容器之一,提供了一组丰富的接口来方便地管理元素集合。以下是 vector 类模板的主要接口:
一、vector的接口介绍
-
构造函数:
vector()
:创建一个空的 vector。vector(size_type count, const T& value)
:创建包含 count 个值为 value 的元素的 vector。vector(const vector& other)
:复制另一个 vector。vector(initializer_list<T> init)
:使用初始化列表创建 vector。vector(iterator first, iterator last)
:创建一个 vector,其元素由范围 [first, last) 内的元素初始化。
-
赋值操作符:
operator=
:将一个 vector 赋值给另一个 vector。assign(InputIt first, InputIt last)
:用范围 [first, last) 内的元素替换当前 vector 的内容。assign(size_type count, const T& value)
:用 count 个值为 value 的元素替换当前 vector 的内容。
-
迭代器:
begin()
:返回指向第一个元素的迭代器。end()
:返回指向最后一个元素后面的位置的迭代器。rbegin()
:返回指向最后一个元素的迭代器。rend()
:返回指向第一个元素前面的位置的迭代器。cbegin()
:返回指向第一个元素的 const 迭代器。cend()
:返回指向最后一个元素后面的位置的 const 迭代器。
-
容量:
size()
:返回 vector 中的元素数量。max_size()
:返回 vector 可以容纳的最大元素数量。capacity()
:返回 vector 当前分配的存储容量。empty()
:如果 vector 为空,则返回 true,否则返回 false。reserve(size_type new_cap)
:请求 vector 容器的存储空间至少足够容纳 new_cap 个元素。shrink_to_fit()
:将 vector 的 capacity 缩小为与其 size 相等。
-
访问元素:
operator[]
:访问指定位置的元素。at(size_type pos)
:访问指定位置的元素,并进行范围检查。front()
:返回第一个元素的引用。back()
:返回最后一个元素的引用。data()
:返回指向底层数据的指针。
-
修改容器:
push_back(const T& value)
:将元素添加到 vector 的末尾。pop_back()
:移除 vector 的最后一个元素。emplace_back(Args&&... args)
:在 vector 的末尾就地构造一个元素。insert(iterator pos, const T& value)
:在指定位置插入元素。erase(iterator pos)
:移除指定位置的元素。clear()
:移除所有元素。
-
修改操作:
resize(size_type count)
:改变 vector 的大小。resize(size_type count, const T& value)
:改变 vector 的大小,并用 value 值初始化新的元素。swap(vector& other)
:交换两个 vector 的内容。
-
搜索:
find(const T& value)
:在 vector 中查找值为 value 的第一个元素。find_if(UnaryPredicate p)
:在 vector 中查找满足条件 p 的第一个元素。count(const T& value)
:返回值为 value 的元素的数量。
-
排序:
sort()
:对 vector 中的元素进行排序。reverse()
:颠倒 vector 中元素的顺序。
二、常用接口的使用
1. 定义vector
在C++中,vector是一个模板类,用于存储一组动态大小的元素。它位于 <vector>
头文件中,可以通过模板参数来指定存储的元素类型。
#include <vector>
using namespace std;vector<int> v_int; // 定义一个存储整数的vector
vector<double> vdouble; // 定义一个存储双精度浮点数的vector
vector<int> v1(10); //定义了10个整型元素的vector(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
vector<int> v2(10,0); //定义了10个整型元素的vector,且给出每个元素的初值为0
vector<int> v3(a); //用数组来创建vector,整体复制性赋值
vector<int> v4(a.begin(),a.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
int a[5]={1,2,3,4,5};
vector<int> v5(a,a+7); //从数组中获得初值
vector<int> v6 = {1, 2, 3}; // 使用初始化列表创建 vector
2. vector赋值操作
#include <iostream>
#include <vector>int main() {vector<int> vec1 = {1, 2, 3};vector<int> vec2 = {4, 5, 6};//operator=: 将一个 vector 赋值给另一个 vector。vec2 = vec1; // 将 vec1 赋值给 vec2vector<int> newVec;//assign(): 用范围 [first, last) 内的元素替换当前 vector 的内容。newVec.assign(vec.begin(), vec.end()); // 用 vec 的内容替换 newVec 的内容//assign(size_type count, const T& value): 用 count 个值为 value 的元素替换当前 vector 的内容。vec.assign(5, 10); // 使用 5 个值为 10 的元素替换 vec 的内容return 0;
}
3. 迭代器
#include <iostream>
#include <vector>int main() {vector<int> vec = {1, 2, 3, 4, 5};// 使用迭代器遍历 vectorfor (auto it = vec.begin(); it != vec.end(); ++it) {cout << *it << " ";}cout << std::endl;return 0;
}
4. 容量操作
resize
vector<int> vec = {1, 2, 3, 4, 5};cout << "Size before resize: " << vec.size() << endl;// resize 前的sizevec.resize(8);// resize 后的sizecout << "Size after resize: " << vec.size() << ndl;for (int num : vec) {cout << num << " ";}cout << endl;
reserve
//改变 vector 的大小为 count,多余的元素被删除或者用默认值填充。vec.resize(10, 10);for (int num : vec) {cout << num << " ";}//将 vector 的容量调整为至少为 new_capvec.reserve(10);cout << endl;
5. 访问元素
[] front back at
vector<int> vec = {1, 2, 3};vec[0] // 第一个元素vec.at(1) // 第二个元素vec.front() // 返回第一个元素的引用。vec.back() // 返回最后一个元素的引用。
6. 修改容器
assign
#include <iostream>
#include <vector>vector<int> vec;vec.assign({1, 2, 3, 4, 5}); //使用assign修改for (int num : vec) {cout << num << " ";}cout << endl;
push_back pop_back
vector<int> vec = {1, 2, 3};vec.push_back(4); // 在末尾插入元素for (int num : vec) {cout << num << " ";}cout << endl;vec.pop_back(); // 删除末尾元素for (int num : vec) {cout << num << " ";}cout << endl;
insert
vector<int> vec = {1, 2, 3};//在 pos 位置之前插入一个元素,返回指向插入元素的迭代器。auto it = vec.insert(vec.begin() + 1, 5);//在 pos 位置之前插入 count 个值为 value 的元素。vec.insert(it, 3, 6); // 在 pos 位置之前插入迭代器范围内的元素。vec.insert(vec.end(), {7, 8, 9}); for (int num : vec) {cout << num << " ";}cout << endl;
erase
vector<int> vec = {1, 2, 3, 4, 5};// 删除 pos 位置处的元素。vec.erase(vec.begin() + 2);// 删除指定范围内的元素。vec.erase(vec.begin() + 1, vec.begin() + 3);for (int num : vec) {cout << num << " ";}cout << endl;
clear
vector<int> vec = {1, 2, 3};//删除 vector 的所有元素。vec.clear();cout << "Size after clear: " << vec.size() << endl;
7. 容器的其他操作
swap
vector<int> vec1 = {1, 2, 3};vector<int> vec2 = {4, 5, 6};//交换当前 vector 和参数 vector 的内容。vec1.swap(vec2);for (int num : vec1) {cout << num << " ";}cout << endl;for (int num : vec2) {cout << num << " ";}cout << endl;
※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持