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 正确 错误示例(空指针): 正确实现(延…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...