C++ STL常用查询手册

当然可以,以下是C++ STL中提到的几种容器的常用增删改查操作的函数,以及每个函数的文字说明,以表格形式展示:
vector:动态数组,可以增长和收缩。
list:双向链表。
deque:双端队列,支持快速的随机访问。
set:基于红黑树的有序不重复元素集合。
map:基于红黑树的键值对集合。

以下是C++ STL中提到的五种容器的增删改查操作的函数及其说明和返回值类型的表格:

操作类型vectorlistdequesetmap
push_back(x): 在尾部添加元素 xpush_back(x): 在尾部添加元素 xpush_back(x): 在尾部添加元素 xinsert(x): 将元素 x 插入到集合中insert(x): 将键值对 x 插入到映射中
push_front(x): 在头部添加元素 xpush_front(x): 在头部添加元素 xpush_front(x): 在头部添加元素 x
emplace_back(args): 构造元素并添加到尾部emplace_back(args): 构造元素并添加到尾部emplace_back(args): 构造元素并添加到尾部emplace(x): 构造元素并插入到集合中emplace(k, v): 构造键值对并插入到映射中
insert(pos, x): 在位置 pos 插入元素 xinsert(pos, x): 在位置 pos 插入元素 xinsert(pos, x): 在位置 pos 插入元素 xinsert(x): 在位置 pos 插入元素 xinsert(x): 在位置 pos 插入键值对 x
pop_back(): 删除尾部元素pop_back(): 删除尾部元素pop_back(): 删除尾部元素erase(x): 删除元素 xerase(k): 删除键为 k 的元素
pop_front(): 删除头部元素pop_front(): 删除头部元素pop_front(): 删除头部元素erase(first, last): 删除区间 [first, last)erase(first, last): 删除区间 [first, last)
erase(pos): 删除位置 pos 的元素erase(pos): 删除位置 pos 的元素erase(pos): 删除位置 pos 的元素clear(): 删除所有元素clear(): 删除所有元素
at(i): 返回索引 i 处的元素引用at(i): 返回索引 i 处的元素引用at(i): 返回索引 i 处的元素引用*find(x): 返回找到的元素的引用at(k): 返回键 k 处的元素值的引用
operator[](i): 返回索引 i 处的元素引用operator[](i): 返回索引 i 处的元素引用operator[](i): 返回索引 i 处的元素引用operator[](k): 返回键 k 处的元素值的引用
front(): 返回第一个元素的引用front(): 返回第一个元素的引用front(): 返回第一个元素的引用find(x): 返回找到的元素的迭代器find(k): 返回找到的键值对的迭代器
back(): 返回最后一个元素的引用back(): 返回最后一个元素的引用back(): 返回最后一个元素的引用
at(i): 返回索引 i 处的元素引用at(i): 返回索引 i 处的元素引用at(i): 返回索引 i 处的元素引用count(x): 返回元素 x 的数量count(k): 返回键 k 的数量
operator[](i): 返回索引 i 处的元素引用operator[](i): 返回索引 i 处的元素引用operator[](i): 返回索引 i 处的元素引用

返回值类型:

  • push_back(x), push_front(x), emplace_back(args), emplace_front(args): void
  • insert(pos, x): iterator
  • pop_back(), pop_front(): void
  • erase(pos), erase(first, last): iterator
  • clear(): void
  • at(i): 引用到指定索引的元素
  • operator[](i): 引用到指定索引的元素
  • front(), back(): 引用到第一个或最后一个元素
  • find(x), find(k): 指向找到元素的迭代器,如果未找到,则为 end() 迭代器

注意:setmap中的find(x)count(x)函数用于查找元素或键,map中的at(k)operator[](k)用于访问键对应的值。如果at(k)map中找不到给定的键,则抛出std::out_of_range异常。

说明:

  • :添加元素到容器中。

    • push_back(x)push_front(x) 分别在容器的尾部和头部添加元素 x
    • emplace_back(args), emplace_front(args), 和 emplace() 是就地构造元素,避免额外的复制或移动。
    • insert(pos, x) 可以在指定位置插入元素。
  • :从容器中删除元素。

    • pop_back()pop_front() 分别删除容器尾部和头部的元素。
    • erase(pos) 删除指定位置的元素或区间。
    • clear() 清空容器。
  • :修改容器中的元素。

    • at(i) 提供了访问指定位置元素的方法,若索引越界则抛出异常。
    • operator[](i) 也提供访问,但不检查越界。
  • :查询容器中的元素。

    • at(i)operator[](i) 用于访问元素。
    • front()back() 分别访问容器的第一个和最后一个元素。
    • find(x)setmap 中用于查找具有特定值的元素。
    • begin()end() 返回指向第一个元素和最后一个元素之后位置的迭代器。

这些操作是容器类的基本功能,使用时需要包含相应的头文件,例如 <vector>, <list>, <deque>, <set>, 和 <map>

以下是C++ STL中提到的五种容器的迭代器定义和使用示例代码:

#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <set>
#include <map>
#include <string>

using namespace std;

int main() {
    // vector
    vector<int> vec = {1, 2, 3, 4, 5};
    vector<int>::iterator vecIt;
    for (vecIt = vec.begin(); vecIt != vec.end(); ++vecIt) {
        cout << *vecIt << " ";
    }
    cout << endl;

    // list
    list<int> lst = {1, 2, 3, 4, 5};
    list<int>::iterator lstIt;
    for (lstIt = lst.begin(); lstIt != lst.end(); ++lstIt) {
        cout << *lstIt << " ";
    }
    cout << endl;

    // deque
    deque<int> deq = {1, 2, 3, 4, 5};
    deque<int>::iterator deqIt;
    for (deqIt = deq.begin(); deqIt != deq.end(); ++deqIt) {
        cout << *deqIt << " ";
    }
    cout << endl;

    // set
    set<int> st = {1, 2, 3, 4, 5};
    set<int>::iterator stIt;
    for (stIt = st.begin(); stIt != st.end(); ++stIt) {
        cout << *stIt << " ";
    }
    cout << endl;

    // map
    map<string, int> mp = {{"one", 1}, {"two", 2}, {"three", 3}};
    map<string, int>::iterator mpIt;
    for (mpIt = mp.begin(); mpIt != mp.end(); ++mpIt) {
        cout << mpIt->first << " : " << mpIt->second << " ";
    }
    cout << endl;

    return 0;
}

说明:

  1. vector:使用vector<int>::iterator定义迭代器vecIt

  2. list:使用list<int>::iterator定义迭代器lstIt

  3. deque:使用deque<int>::iterator定义迭代器deqIt

  4. set:使用set<int>::iterator定义迭代器stIt

  5. map:使用map<string, int>::iterator定义迭代器mpIt

迭代器用于遍历容器中的元素。在for循环中,迭代器从容器的begin()开始,直到end()结束。对于map,迭代器指向pair对象,可以使用->first->second来访问键值对。

注意,迭代器的定义应该在循环外部进行,以避免在每次迭代中重复定义迭代器,这有助于提高代码的清晰度和效率。

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

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

相关文章

Electron 主进程与渲染进程、预加载preload.js

在 Electron 中&#xff0c;主要控制两类进程&#xff1a; 主进程 、 渲染进程 。 Electron 应⽤的结构如下图&#xff1a; 如果需要更深入的了解electron进程&#xff0c;可以访问官网 流程模型 文档。 主进程 每个 Electron 应用都有一个单一的主进程&#xff0c;作为应用…

webpack插件 --- webpack-bundle-analyzer【查看包体积】

const UglifyJsPlugin require(uglifyjs-webpack-plugin) // 清除注释 const CompressionWebpackPlugin require(compression-webpack-plugin); // 开启压缩// 是否为生产环境 const isProduction process.env.NODE_ENV production; const { BundleAnalyzerPlugin } requi…

【AI大模型】使用Embedding API

一、使用OpenAI API 目前GPT embedding mode有三种&#xff0c;性能如下所示&#xff1a; 模型每美元页数MTEB得分MIRACL得分text-embedding-3-large9,61554.964.6text-embedding-3-small62,50062.344.0text-embedding-ada-00212,50061.031.4 MTEB得分为embedding model分类…

rabbitMQ 简单使用

安装 rabbitMQ 下载地址&#xff1a;rabbitmq-3.12.0 安装 windows rabbitMQ 需要的命令 进入 rabbitMQ 的 sbin 目录后 cmd &#xff08;需要管理员权限&#xff09; rabbitmq-plugins.bat enable rabbitmq_management随后重启 rabbitMQ #关闭服务 net stop rabbitmq #开…

openpnp - juki吸嘴尺寸

文章目录 openpnp - juki吸嘴尺寸概述笔记吸嘴可以对应的最小元件尺寸END openpnp - juki吸嘴尺寸 概述 在网上买的juki吸嘴的商品页面&#xff0c;并没有具体的吸嘴尺寸。 现在贴片时&#xff0c;要根据吸嘴外径大小来决定具体元件要用哪种吸嘴&#xff0c;先自己量一下。 …

2024 uniapp入门教程 01:含有vue3基础 我的第一个uniapp页面

uni-app官网uni-app,uniCloud,serverless,快速体验,看视频&#xff0c;10分钟了解uni-app,为什么要选择uni-app&#xff1f;,功能框架图,一套代码&#xff0c;运行到多个平台https://uniapp.dcloud.net.cn/ 准备工作&#xff1a;HBuilder X 软件 HBuilder X 官网下载&#xf…

迁移学习案例-python代码

大白话 迁移学习就是用不太相同但又有一些联系的A和B数据&#xff0c;训练同一个网络。比如&#xff0c;先用A数据训练一下网络&#xff0c;然后再用B数据训练一下网络&#xff0c;那么就说最后的模型是从A迁移到B的。 迁移学习的具体形式是多种多样的&#xff0c;比如先用A训练…

LeetCode讲解篇之300. 最长递增子序列

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题我们可以通过动态规划求解&#xff0c;使用一个数组f&#xff0c;数组f的i号元素表示[0, i]范围内最长递增子序列的长度 状态转移方程&#xff1a;f[i] max(f[j] 1)&#xff0c;其中 0 < j < i 题…

docker快速安装ELK

一、创建elk目录 创建/elk/elasticsearch/data/目录 mkdir -p /usr/local/share/elk/elasticsearch/data/ 创建/elk/logstash/pipeline/目录 mkdir -p /usr/local/share/elk/logstash/pipeline/ 创建/elk/kibana/conf/目录 mkdir -p /usr/local/share/elk/kibana/conf/ 二、创建…

大模型应用新领域:探寻终端侧 AI 竞争核心|智于终端

2024年过去2/3&#xff0c;大模型领域的一个共识开始愈加清晰&#xff1a; AI技术的真正价值在于其普惠性。没有应用&#xff0c;基础模型将无法发挥其价值。 于是乎&#xff0c;回顾这大半年&#xff0c;从互联网大厂到手机厂商&#xff0c;各路人马都在探索AI时代Killer AP…

【超级详细解释】力扣每日一题 134.加油站 48. 旋转图像

134.加油站 力扣 这是一个很好的问题。这个思路其实基于一种贪心策略。我们从整个路径的油量变化来理解它&#xff0c;结合一个直观的“最低点法则”&#xff0c;来确保找到正确的起点。 问题的核心&#xff1a;油量差值的累积 对于每个加油站&#xff0c;我们有两个数组&…

1、如何查看电脑已经连接上的wifi的密码?

在电脑桌面右下角的如下位置&#xff1a;双击打开查看当前连接上的wifi的名字&#xff1a;ZTE-kfdGYX-5G 按一下键盘上的win R 键, 输入【cmd】 然后&#xff0c;按一下【回车】。 输入netsh wlan show profile ”wifi名称” keyclear : 输入完成后&#xff0c;按一下回车&…

51单片机的水质检测系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温度传感器ph传感器浑浊度传感器蓝牙继电器LED、按键和蜂鸣器等模块构成。适用于水质监测系统&#xff0c;含检测和调整水温、浑浊度、ph等相似项目。 可实现功能: 1、LCD1602实时显示水温、水体ph和浑浊度 2、温…

Studying-多线程学习Part3 - condition_variable与其使用场景、C++11实现跨平台线程池

来源&#xff1a;多线程学习 目录 condition_variable与其使用场景 生产者与消费者模型 C11实现跨平台线程池 condition_variable与其使用场景 生产者与消费者模型 生产者-消费者模式是一种经典的多线程设计模式&#xff0c;用于解决多个线程之间的数据共享和协作问题。…

基于PHP的校园二手书交易管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的校园二手书交易管理系统 一 介绍 此二手书交易管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注…

k8s中pod的管理

一、资源管理 1.概述 说到k8s中的pod&#xff0c;即荚的意思&#xff0c;就不得不先提到k8s中的资源管理&#xff0c;k8s中可以用以下命令查看我们的资源&#xff1a; kubectl api-resources 比如我们现在需要使用k8s开启一个东西&#xff0c;那么k8s通过apiserver去对比etc…

《从零开始大模型开发与微调》真的把大模型说透了!零基础入门一定要看!

2022年底&#xff0c;ChatGPT震撼上线&#xff0c;大语言模型技术迅速“席卷”了整个社会&#xff0c;人工智能技术因此迎来了一次重要进展。与大语言模型相关的研发岗薪资更是水涨船高&#xff0c;基本都是5w月薪起。很多程序员也想跟上ChatGPT脚步&#xff0c;今天给大家带来…

51单片机系列-串口(UART)通信技术

&#x1f308;个人主页&#xff1a; 羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 并行通信和串行通信 并行方式 并行方式&#xff1a;数据的各位用多条数据线同时发送或者同时接收 并行通信特点&#xff1a;传送速度快&#xff0c;但因需要多根传输线&#xf…

免杀对抗—GOC#反VT沙盒资源分离混淆加密

前言 今天的主要内容是反VT沙盒&#xff0c;我们都知道生成的后门会被杀软上穿到沙盒中去运行&#xff0c;去逆向。如此一来我们的后门就很容易被查杀掉&#xff0c;但如果我们对后门进行一些操作&#xff0c;让它在被逆向的时候&#xff0c;反编译出一堆乱码&#xff0c;或者…

【大语言模型-论文精读】用于医疗领域摘要任务的大型语言模型评估综述

【大语言模型-论文精读】用于医疗领域摘要任务的大型语言模型评估综述 论文信息&#xff1a; 用于医疗领域摘要任务的大型语言模型评估&#xff1a;一篇叙述性综述&#xff0c; 文章是由 Emma Croxford , Yanjun Gao 博士 , Nicholas Pellegrino , Karen K. Wong 等人近期合作…