C++标准库容器的常用成员函数
- 游戏开发
- 2025-09-16 06:00:02

目录
C++ 标准库容器简介
通用成员函数
1. 大小相关
size()
empty()
max_size()
2. 元素访问
operator[]
at(size_t n)
front()
back()
3. 修改容器
push_back(const T& value)
pop_back()
clear()
insert()
erase()
4. 迭代器相关
begin()
end()
rbegin() 和 rend()
std::vector 的特有成员函数
1. capacity()
2. reserve(size_t n)
3. resize(size_t n)
4. shrink_to_fit()(C++11 起)
其他容器的特有函数(简单介绍)
std::list:
std::map:
std::set:
C++ 标准库提供了多种容器(如 std::vector、std::list、std::map 等),这些容器都有一些通用的成员函数,也有一些特定于容器类型的函数。
C++ 标准库容器简介C++ 标准库容器在 <vector>、<list>、<map> 等头文件中定义,属于 STL(标准模板库)的一部分。常见的容器包括:
顺序容器:std::vector(动态数组)、std::array(固定数组)、std::list(双向链表)、std::deque(双端队列)。
关联容器:std::map(键值对映射)、std::set(唯一键集合)。
无序容器:std::unordered_map、std::unordered_set(哈希表实现)。
每个容器都有一套成员函数,用于操作容器中的元素、管理大小和访问数据。
通用成员函数大多数容器都支持以下通用成员函数(部分可能因容器类型略有差异):
1. 大小相关 size()返回容器当前元素个数。
返回类型:size_t(无符号整数)。
示例:
std::vector<int> vec = {1, 2, 3}; std::cout << vec.size(); // 输出 3 empty()检查容器是否为空。
返回类型:bool(true 表示空)。
示例:
std::vector<int> vec; std::cout << vec.empty(); // 输出 1 (true) vec.push_back(1); std::cout << vec.empty(); // 输出 0 (false) max_size()返回容器理论上能容纳的最大元素个数(受内存限制)。
返回类型:size_t。
示例:
std::vector<int> vec; std::cout << vec.max_size(); // 输出很大数字(如 2³²-1 或 2⁶⁴-1) 2. 元素访问 operator[]通过索引访问元素(不检查越界)。
返回类型:元素类型的引用(T&)。
只适用于支持随机访问的容器(如 vector, deque)。
示例:
std::vector<int> vec = {10, 20, 30}; std::cout << vec[1]; // 输出 20 vec[1] = 50; // 修改为 50 at(size_t n)通过索引访问元素(带越界检查,抛出 std::out_of_range 异常)。
返回类型:元素类型的引用(T&)。
示例: std::vector<int> vec = {10, 20}; std::cout << vec.at(1); // 输出 20 // vec.at(5); // 抛出异常:out of range front()返回第一个元素的引用。
示例:
std::vector<int> vec = {1, 2, 3}; std::cout << vec.front(); // 输出 1 back()返回最后一个元素的引用。
示例:
std::vector<int> vec = {1, 2, 3}; std::cout << vec.back(); // 输出 3 3. 修改容器 push_back(const T& value)在容器末尾添加一个元素(vector, list, deque 支持)。
示例:
std::vector<int> vec; vec.push_back(42); // vec = {42} pop_back()删除最后一个元素(不返回)。
示例:
std::vector<int> vec = {1, 2, 3}; vec.pop_back(); // vec = {1, 2} clear()删除所有元素,使容器变空。
示例:
std::vector<int> vec = {1, 2, 3}; vec.clear(); // vec 变空,size() == 0 insert()在指定位置插入元素(具体参数因容器不同)。
示例(vector):
std::vector<int> vec = {1, 3}; vec.insert(vec.begin() + 1, 2); // vec = {1, 2, 3} erase()删除指定位置或范围的元素。
示例:
std::vector<int> vec = {1, 2, 3}; vec.erase(vec.begin()); // vec = {2, 3} 4. 迭代器相关 begin()返回指向第一个元素的迭代器。
示例:
std::vector<int> vec = {1, 2, 3}; auto it = vec.begin(); // it 指向 1 end()返回指向末尾后一位置的迭代器(不指向最后一个元素)。
示例:
std::vector<int> vec = {1, 2, 3}; auto it = vec.end(); // 指向 3 之后的“哨兵”位置 rbegin() 和 rend()返回反向迭代器(从末尾向开头遍历)。
示例:
std::vector<int> vec = {1, 2, 3}; auto rit = vec.rbegin(); // 指向 3 std::vector 的特有成员函数 1. capacity()返回当前分配的内存容量(可能大于 size())。
示例:
std::vector<int> vec; vec.push_back(1); std::cout << vec.capacity(); // 可能输出 1、2、4(实现依赖) 2. reserve(size_t n)预分配内存空间,避免频繁扩展。
示例:
std::vector<int> vec; vec.reserve(10); // 预留空间给 10 个元素 vec.push_back(1); // 不会重新分配内存 3. resize(size_t n)调整容器大小,多余元素删除,缺少元素用默认值填充。
示例:
std::vector<int> vec = {1, 2}; vec.resize(4); // vec = {1, 2, 0, 0} vec.resize(1); // vec = {1} 4. shrink_to_fit()(C++11 起)缩小容量以匹配当前大小(非强制,可能无效)。
示例:
std::vector<int> vec(100); // 容量 >= 100 vec.resize(10); vec.shrink_to_fit(); // 试图将容量缩小到 10 其他容器的特有函数(简单介绍) std::list:push_front():在头部添加元素。
pop_front():删除头部元素。
std::map:find(key):查找键对应的元素。
insert({key, value}):插入键值对。
std::set:count(value):检查值是否存在(返回 0 或 1)。
C++标准库容器的常用成员函数由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++标准库容器的常用成员函数”
上一篇
最佳Nginx日志分割