C++ 标准库容器的常用成员函数
目录
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 标准库容器简介 通用成员函数 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() rbegi…...
MySQL双主搭建-5.7.35
文章目录 上传并安装MySQL 5.7.35双主复制的配置实例一:172.25.0.19:实例二:172.25.0.20: 配置复制用户在实例 1 (172.25.0.19)上执行:在实例 2 (172.25.0.20)上执行&…...

Uniapp开发微信小程序插件的一些心得
一、uniapp 开发微信小程序框架搭建 1. 通过 vue-cli 创建 uni-ap // nodejs使用18以上的版本 nvm use 18.14.1 // 安装vue-cli npm install -g vue/cli4 // 选择默认模版 vue create -p dcloudio/uni-preset-vue plugindemo // 运行 uniapp2wxpack-cli npx uniapp2wxpack --…...

Vscode通过Roo Cline接入Deepseek
文章目录 背景第一步、安装插件第二步、申请API key第三步、Vscode中配置第四步、Deepseek对话 背景 在前期介绍【IDEA通过Contince接入Deepseek】步骤和流程,那如何在vscode编译器中使用deepseek,记录下来,方便备查。 第一步、安装插件 在…...

不同规模企业如何精准选择AI工具: DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具深度剖析与对比
本文深入探讨了最近国内外主流的 DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具的技术细节、性能表现、应用场景及局限性,并从技术能力、功能需求、成本预算、数据安全和合规以及服务与支持五个关键维度,详细分析了不同规模企业在选择 AI 工具时的考量因素…...

如何有效判断与排查Java GC问题
目录 一、GC的重要性与对性能的影响 (一)GC对性能的影响简要分析 1.GC暂停与应用停顿 2.GC吞吐量与资源利用率 3.GC对内存管理的作用:资源回收 4.GC策略与优化的选择 (二)GC的双刃剑 二、GC性能评价标准 &…...

【笔记】用大预言模型构建专家系统
最近闲庭漫步,赏一赏各个AI大语言模型芳容。也趁着时间,把倪海夏一家的天纪和人纪视频看完了,感谢倪先生和现在网络的知识分享,受益匪浅。但是发现看完,很多不错的知识都不能记录在脑子里,那用的时候岂不是…...
Android SystemUI深度定制实战:下拉状态栏集成响铃功能开关全解析
一、功能实现全景视图 目标场景:在Android 14系统级ROM定制中,为SystemUI下拉状态栏的QuickQSPanel区域新增响铃模式切换开关,实现静音/响铃快速切换功能。该功能需通过三层关键改造实现: 二、核心实现三部曲 1. 配置注入&…...

【Python】基础语法三
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解Python的函数、列表和数组。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自ÿ…...

[Computer Vision]实验六:视差估计
目录 一、实验内容 二、实验过程 2.1.1 test.py文件 2.1.2 test.py文件结果与分析 2.2.1 文件代码 2.2.2 结果与分析 一、实验内容 给定左右相机图片,估算图片的视差/深度;体现极线校正(例如打印前后极线对)、同名点匹配…...

【 开发知识点 一 】 随机数生成器 /dev/urandom 和 /dev/random
文章目录 一、随机数生成器 是什么 ?二、为什么 需要 随机数生成器 ?三、随机数生成器 基本原理四、随机数生成器 三个输出接口五、随机生成器 应用1、简单应用2、项目应用一、随机数生成器 是什么 ? /dev/random 和 /dev/urandom 是 Linux 上的字符设备文件,它们是随机数…...

LabVIEW虚拟弗兰克赫兹实验仪
随着信息技术的飞速发展,虚拟仿真技术已经成为教学和研究中不可或缺的工具。开发了一种基于LabVIEW平台开发的虚拟弗兰克赫兹实验仪,该系统不仅能模拟实验操作,还能实时绘制数据图形,极大地丰富了物理实验的教学内容和方式。 …...

LLC谐振变换器恒压恒流双竞争闭环simulink仿真
1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Ra)软件。建议采用matlab2017 Ra及以上版本打开。(若需要其他版本可联系代为转换)针对全桥LLC拓扑,利用Matlab软件搭建模型,分别对轻载…...

TVbox蜂蜜影视:智能电视观影新选择,简洁界面与强大功能兼具
蜂蜜影视是一款基于猫影视开源项目 CatVodTVJarLoader 开发的智能电视软件,专为追求简洁与高效观影体验的用户设计。该软件从零开始编写,界面清爽,操作流畅,特别适合在智能电视上使用。其最大的亮点在于能够自动跳过失效的播放地址…...

Python 绘制迷宫游戏,自带最优解路线
1、需要安装pygame 2、上下左右移动,空格实现物体所在位置到终点的路线,会有虚线绘制。 import pygame import random import math# 迷宫单元格类 class Cell:def __init__(self, x, y):self.x xself.y yself.walls {top: True, right: True, botto…...

vue3学习-1(基础)
vue3学习-1(基础) 1. 开始API 风格选项式 API (Options API)组合式 API (Composition API) 快速创建个应用 2.基础1. 创建个应用2.模板语法3.响应式基础reactive() 的局限性[](https://cn.vuejs.org/guide/essentials/reactivity-fundamentals.html#limi…...

deepseek使用记录18——文化基因之文化融合
文明长河中的生命浪花 在洛阳白马寺的银杏树下,年轻母亲指着"农禅并重"碑刻给孩子讲述祖辈耕作的故事;在哔哩哔哩的直播间里,00后女孩穿着汉服跳起街舞,弹幕飘过"这才是文化缝合怪"。当文明交融的宏大叙事照…...

Hadoop简介
1. Hadoop简介 官网:http://hadoop.apache.org 1.1 Hadoop架构 Hadoop由三个模块组成:分布式存储HDFS、分布式计算MapReduce、资源调度引擎YARN 1.2 Hadoop历史 Hadoop作者Doug Cutting Apache Lucene是一个文本搜索系统库 Apache Nutch作为前者的一部…...

密码学(哈希函数)
4.1 Hash函数与数据完整性 数据完整性: 检测传输消息(加密或未加密)的修改。 密码学Hash函数: 构建某些数据的简短“指纹”;如果数据被篡改,则该指纹(以高概率)不再有效。Hash函数…...
谈谈单例模式中通过Htools包的SpringUtil.getBean获取Bean的好处
目录 优势 解决依赖注入失效问题: 典型应用场景: 好处 1. 实例化时序问题 2. 延迟获取解决空指针 3. 设计模式与 Spring 的权衡 代码对比:错误 vs 正确 错误示例(空指针): 正确实现(延…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...