C++常用容器操作

STL标准模板库

1、vector

vector<int> res;
res.front(); // res的首元素
res.back(); // res的尾元素
for (int i = 0; i < n; i++) {
    if (res.at(i) == 1) { // 寻找res中元素等于1的下标
    }
}

调用std::remove,想要删除元素,必须配合erase成员函数才行,将std::remove返回的迭代器至end全部删除,以下是删除一个val值

vector<int> nums;
nums.erase(std::remove(nums.begin(), nums.end(), val), nums.end());
#include <vector>  
#include <algorithm>  
int main() {  
    std::vector<int> v = {1, 2, 3, 2, 4, 2, 5, 6};  
    int val = 2; // 要删除的值  
    // 使用 remove_if 和 lambda 表达式来将所有等于 val 的元素移动到容器末尾  
    v.erase(std::remove_if(v.begin(), v.end(), [val](int i) { return i == val; }), v.end());  
    // 此时 v 中所有等于 val 的元素都被删除了  
    // 输出结果以验证  
    for (int i : v) {  
        std::cout << i << ' ';  
    }  
    std::cout << '\n';  
    return 0;  
}

2、stack

栈是一种后进先出(Last in First out,LIFO)的数据类型,每次元素入栈时只能添加到栈顶,出栈时只能从栈顶元素出栈。C++中,使用栈需要包含头文件,C++中栈的基本操作如下:

push(); // 入栈。在栈顶添加一个元素,无返回值;
pop(); // 出栈。将栈顶元素删除(出队),无返回值;
top(); // 获得栈顶元素。此函数返回值为栈顶元素,常与pop()函数一起,先通过top()获得栈顶元素,然后将其从栈中删除;
size(); // 获得栈大小。此函数返回栈的大小,返回值也是“size_t”类型的数据,“size_t”是“unsigned int”的别名。
empty(); // 判断栈是否为空。此函数返回栈是否为空,返回值是bool类型。栈空:返回true;不空:返回false。

3、queue

队列是一种先进先出(First in First out,FIFO)的数据类型,每次元素的入队都只能添加到队列尾部,出队时从队列头部开始出。C++中,使用队列需要包含头文件,C++中队列的基本操作如下:

push(); // 入队。在队列尾端添加一个元素,无返回值;
pop(); // 出队。将队列头部元素删除(出队),无返回值;
front(); // 获得队列头部元素。此函数返回值为队列的头部元素,常与pop()函数一起,先通过front()获得队列头部元素,然后将其从队列中删除;
size(); // 获得队列大小。此函数返回队列的大小,返回值是“size_t”类型的数据,“size_t”是“unsigned int”的别名。
empty(); // 判断队列是否为空。此函数返回队列是否为空,返回值是bool类型。队列空:返回true;不空:返回false。
back(); // 返回队列尾部元素,就是队列中最后一个进去的元素。

4、set

哈希数据结构,std::set, std::multiset, unordered_set常用操作

set<int> s;
s.begin()					// 返回指向第一个元素的迭代器
s.end()						// 返回指向最后一个元素的迭代器
s.clear()					// 清除所有元素
s.count()					// 返回某个值元素的个数
s.empty()					// 如果集合为空,返回true,否则返回false
s.equal_range()				// 返回集合中与给定值相等的上下限的两个迭代器
s.erase()					// 删除集合中的元素
s.find(k)					// 返回一个指向被查找到元素的迭代器
s.insert()					// 在集合中插入元素
s.lower_bound(k)			// 返回一个迭代器,指向键值大于等于k的第一个元素
s.upper_bound(k)			// 返回一个迭代器,指向键值大于k的第一个元素
s.max_size()				// 返回集合能容纳的元素的最大限值
s.rbegin()					// 返回指向集合中最后一个元素的反向迭代器
s.rend()					// 返回指向集合中第一个元素的反向迭代器
s.size()					// 集合中元素的数目

5、map

C++中map是一种关联式容器,包含“键值”对

map<int, int> m;
m.begin()          // 返回指向map头部的迭代器
m.clear(// 删除所有元素
m.count()          // 返回指定元素出现的次数,因为key值不会重复,所以只能是1 or 0
m.empty()          // 如果map为空则返回true
m.end()            // 返回指向map末尾的迭代器
m.equal_range()    // 返回特殊条目的迭代器对
m.erase()          // 删除一个元素
m.find()           // 查找一个元素,返回的是迭代器
m.get_allocator()  // 返回map的配置器
m.insert()         // 插入元素
m.key_comp()       // 返回比较元素key的函数
m.lower_bound()    // 返回键值>=给定元素的第一个位置
m.max_size()       // 返回可以容纳的最大元素个数
m.rbegin()         // 返回一个指向map尾部的逆向迭代器
m.rend()           // 返回一个指向map头部的逆向迭代器
m.size()           // 返回map中元素的个数
m.swap()           // 交换两个map
m.upper_bound()    // 返回键值>给定元素的第一个位置
m.value_comp()     // 返回比较元素value的函数

6、string

string str;
str.push_back(); // 在尾部插入元素
str.pop_back(); // 在尾部弹出元素
str.substr(pos, n); // 从下标为pos开始截取字符串,截取长度为n
int pos = str.find("QQ"); // 查找子字符串"QQ"的位置
str.insert(5, "Beautiful"); // 在下标5处插入字符串"Beautiful"
str.erase(s.begin() + 1); // 使下标1的字符删除
sort(s.begin(), s.end()) // 排序,需要头文件#include <algorithm>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/632633.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从Photoshop到AutoCAD,TeamOS在线预览全搞定:可道云TeamOS系统的在线预览功能深度体验

我们每天都要处理大量的文件&#xff0c;领导发过来的压缩包、同事发来的psd文件等&#xff0c;各种格式的文件杂乱又不好查阅…… 迫切需要一个能够在线预览、管理文件的平台。 初次搭建teamOS 可道云teamOS是一个企业级的在线文件管理平台&#xff0c;支持上百种格式的在线…

Pytest测试实战

Pytest测试框架是动态语言Python专用的测试框架&#xff0c;使用起来非常的简单&#xff0c;这主要得易于它的设计&#xff0c;Pytest测试框架具备强大的功能&#xff0c;丰富的第三方插件&#xff0c;以及可扩展性好&#xff0c;可以很好的和unittest测试框架能够结合起来在项…

启明云端ESP32-S3模组WT32-S3选型,Flash最大可选16MB,PSRAM最大可选8MB

使用ESP32-S3单芯片&#xff0c;可以完成语音连接屏控三合一功能。接下来给大家推荐一款ESP32-S3模组WT32-S3&#xff0c;Flash 最大可选 16MB,PSRAM 最大可选 8MB。核心芯片是ESP32-S3。 2.4GHz Wi-Fi(802.11b/g/n)Bluetooth 5(LE)模组&#xff0c;内置ESP32-S3系列芯片&#…

分析人工智能在智慧银行服务中的实际应用以及面临的挑战

一、引言 近年来,人工智能(AI)技术快速发展,其在金融领域,特别是智慧银行服务中的应用日益广泛。人工智能以其独特的数据处理能力、预测分析能力以及自动化决策能力,极大地提升了智慧银行的服务效率、降低了运营成本,并优化了客户体验。然而,人工智能在智慧银行服务中…

建模:3dmax

3Dmax 制作模型和动画&#xff08;橘肉&#xff09;&#xff1b; RizomUV 对模型进行展UV&#xff08;橘皮&#xff09;&#xff1b; Substance Painter 纹理手绘&#xff08;给橘皮制定想要的皮肤&#xff09;&#xff1b; 1.基础 1.1可编辑多边形、可编辑样条线 体、面都需要…

霍庭格TruPlasma MF 7100 7050电源现货50KW

霍庭格TruPlasma MF 7100 7050电源现货50KW

力扣HOT100 - 416. 分割等和子集

解题思路&#xff1a; 动态规划 对于当前考虑的元素 nums[i]&#xff0c;如果 dp[ j - nums[ i ] ] 为 true&#xff0c;说明可以用前面的元素构成和为 j -nums[ i ] 的子集&#xff0c;那么在加上当前元素 nums[ i ] 的情况下&#xff0c;就可以构成和为 j 的子集&#xff0…

【MySQL】 查询进阶 | 聚合查询 | 联合查询 | 聚合函数 | 笛卡尔积 | 内连接 | 外链接 | 自连接 | 子查询 | 合并查询

文章目录 查询进阶1.聚合查询1.聚合函数2.group by 子句3.having 2.联合查询笛卡尔积 1.内连接查询许仙同学的成绩查询所有同学的总成绩查询所有同学的每门课程和分数&#xff1a; 2.外连接1.内连接&#xff1a;2.左外连接3.右外链接 3.自连接4.子查询单行子查询多行子查询查询…

CA、ukey、java对接登录

Ukey登录 随着互联网技术的发展&#xff0c;越来越多的应用需要用户进行登录&#xff0c;以验证其身份和权限。为了增强安全性&#xff0c;许多应用选择使用硬件设备来存储和管理用户的身份信息。Ukey&#xff08;也称为USB Key&#xff09;是一种常见的硬件设备&#xff0c;用…

【极简】docker常用操作

镜像images是静态的 容器container是动态的&#xff0c;是基于镜像的&#xff0c;类似于一个进程。 查看docker images&#xff1a; docker images 或者docker image ls 查看docker container情况&#xff1a;docker ps -a&#xff0c;-a意思是--all 运行一个container: doc…

高效水深度除六价铬工艺的技术研究与应用

关键词&#xff1a;六价铬&#xff1b;水处理&#xff1b;离子交换&#xff1b;环境保护&#xff1b;技术创新​ 随着工业化进程的加速&#xff0c;重金属污染尤其是六价铬的排放问题日益严重。六价铬是一种高度有害的污染物&#xff0c;广泛存在于电镀、染料制造、皮革加工等…

JUnit5测试用例

1.用Test注解表示为测试方法 2.使用DisplayName定义别名 3.使用Assertions类的断言方法 使用断言&#xff0c;可以判断方法的实际执行结果和预期结果是否一致 assertEqualsassertTureassertNotNullassertAllassertThrows 下图是预期与实际不同时报错图 4.使用BeforeEach注解&…

【原创】java+springboot+mysql企业邮件管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

uniapp微信小程序使用vscode代替HBuilderX开发uniapp微信小程序并且vscode改动代码微信开发者工具能实时更新

前言 最近公司开发新的小程序项目&#xff0c;经调研综合所有人员考虑&#xff0c;用uni-app Vue3tsvite技术栈开发&#xff1b;而官方推荐使用HBuilderX开发&#xff0c;而考虑到目前公司所有前端人员对VsCode更熟悉&#xff0c;故此总结了一下uniapp项目使用vscode代替HBuild…

vue3 + antd-vue@4 a-table单元格合并,rowSpan(行合并),colSpan(列合并)详解, 表头合并详解, 表头自定义详解

一、解释 1、rowSpan 1&#xff09;、行合并 2&#xff09;、当为0时&#xff1a;去掉边框 3&#xff09;、当为1时&#xff1a;不合并 4&#xff09;、大于1的x时&#xff1a;包含当前单元格行合并x个单元格 2、colSpan 1&#xff09;、列合并 2&#xff09;、当为0时&#xf…

C++ 将字符串解析为argc、argv

文章目录 前言一、如何实现&#xff1f;1、实现split2、split双引号3、奇数下标元素加入结果4、偶数下标元素split空格 二、完整代码三、使用示例1、解析命令行2、构造argc、argv 总结 前言 一般开启子进程的时候&#xff0c;需要传参数&#xff0c;通常直接传输命令行字符串&…

SQL使用Groupby分组后,选择每个分组某个值最大的那一行

思路是&#xff1a; 先定位分组后某个值最大的值是多少根据值去全表匹配&#xff0c;得到对应的行 比如有个表&#xff1a; SELECT * FROM my_table按照sku_id分组后&#xff0c;选择record_date最大的那一行的全部值&#xff0c;先分组&#xff1a; SELECT sku_id,max(rec…

党建管理系统源码 搭建智慧党建小程序+支持在线缴费、考试、学习 功能强大

随着信息技术的飞速发展&#xff0c;党建工作也迎来了数字化、智能化的新时代。为了提升党建工作的效率&#xff0c;优化党员参与体验&#xff0c;基于党建管理系统源码的智慧党建小程序非常好用。分享一款春哥智慧党建小程序源码&#xff0c;该小程序集成了在线缴费、考试、学…

什么是蜜罐,在当前网络安全形势下,蜜罐能提供哪些帮助

在当前的互联网时代&#xff0c;网络安全威胁日益严峻&#xff0c;攻击手段层出不穷。为了应对这些威胁&#xff0c;网络安全专家们不断探索新的防御手段&#xff0c;在过去的几年里&#xff0c;一种更加积极主动的网络安全方法正在兴起。蜜罐技术便是这样一种备受瞩目的主动防…

echers配置项:折线图,折现的颜色修改

如上图所示&#xff1a;红框内的折现颜色修改&#xff0c;并隐藏默认的点 series: [{data: [1, 230, 224, 218, 135, 147, 760,1500,1200,2500,2000],type: line,lineStyle: {color: #00DBFE // 折现颜色},symbol:none, // 不显示点smooth: true, // 折现角度&#xff1a;圆滑…