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 正确 错误示例(空指针): 正确实现(延…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
