std::vector
是C++标准库中的一个容器,提供了动态数组的功能。下面列出了一些 std::vector
类常用的方法:
-
构造函数和析构函数:
vector()
:构造一个空的向量。vector(size_type n)
:构造一个包含 n 个元素的向量,每个元素都使用默认构造函数进行初始化。vector(size_type n, const T& val)
:构造一个包含 n 个元素的向量,每个元素都初始化为 val 的副本。vector(const vector& other)
:拷贝构造函数,构造一个向量,其元素是另一个向量 other 的副本。~vector()
:析构函数,释放向量所占用的内存。
-
赋值和清空操作:
operator=
:赋值运算符,用于将一个向量的内容复制到另一个向量。assign
:用于将新内容替换现有内容。clear()
:清空向量,删除所有元素。
-
元素访问:
operator[]
:通过索引访问向量中的元素。at()
:通过索引访问向量中的元素,提供边界检查。front()
:返回第一个元素的引用。back()
:返回最后一个元素的引用。data()
:返回指向向量中数据的指针。
-
迭代器:
begin()
:返回指向第一个元素的迭代器。end()
:返回指向尾元素的下一个位置的迭代器。
-
大小和容量:
size()
:返回向量中的元素数。max_size()
:返回向量可能包含的最大元素数。capacity()
:返回向量当前可容纳的元素数。resize(size_type n)
:改变向量的大小为 n。reserve(size_type n)
:请求向量容量至少达到 n。
-
修改向量:
push_back(const T& val)
:在向量末尾添加一个元素。pop_back()
:删除向量末尾的元素。insert(iterator position, const T& val)
:在指定位置插入一个元素。erase(iterator position)
:删除指定位置的元素。swap(vector& other)
:交换两个向量的内容。emplace
:在指定位置就地构造一个元素。
-
查找和排序:
find()
:查找指定值的第一个出现位置。rfind()
:查找指定值的最后一个出现位置。sort()
:对向量进行排序。
#include <iostream>
#include <vector>
#include <algorithm> // 包含 sort 函数int main() {// 构造函数示例std::vector<int> vec1; // 创建一个空向量std::vector<int> vec2(5); // 创建一个包含5个元素的向量,元素值为默认值std::vector<int> vec3(3, 10); // 创建一个包含3个元素的向量,每个元素的值都为10std::vector<int> vec4 = {1, 2, 3, 4, 5}; // 使用初始化列表创建向量// 访问元素示例std::cout << "First element of vec4: " << vec4[0] << std::endl;std::cout << "Second element of vec4: " << vec4.at(1) << std::endl;std::cout << "Last element of vec4: " << vec4.back() << std::endl;// 修改向量示例vec4.push_back(6); // 在向量末尾添加元素vec4.pop_back(); // 删除向量末尾的元素vec4.insert(vec4.begin() + 2, 7); // 在指定位置插入元素vec4.erase(vec4.begin() + 3); // 删除指定位置的元素vec4.resize(8); // 改变向量的大小为8vec4.clear(); // 清空向量// 迭代器示例std::vector<int> vec5 = {5, 7, 8, 0, 3};for (auto it = vec5.begin(); it != vec5.end(); ++it) {std::cout << *it << " ";}std::cout << std::endl;// 使用 find 函数查找元素auto it = std::find(vec5.begin(), vec5.end(), 3);if (it != vec5.end()) {std::cout << "Element 3 found at position: " << it - vec5.begin() << std::endl;} else {std::cout << "Element 3 not found." << std::endl;}// 排序:使用sort方法, 默认升序规则std::sort(vec5.begin(), vec5.end());std::cout << "vec5 排序" << std::endl;for (auto it = vec5.begin(); it != vec5.end(); ++it) {std::cout << *it << " ";}// 大小和容量示例std::cout << "Size of vec5: " << vec5.size() << std::endl;std::cout << "Capacity of vec5: " << vec5.capacity() << std::endl;// 赋值和交换示例std::vector<int> vec6 = {1, 2, 3};std::vector<int> vec7 = {4, 5, 6};vec6 = vec7; // 使用赋值运算符将一个向量的内容复制到另一个向量vec6.swap(vec7); // 交换两个向量的内容return 0;
}
参考:
https://en.cppreference.com/w/cpp/container/vector