STL常用容器 (C++核心基础教程之STL容器详解)String的API

news2024/11/29 11:55:35

在C++的标准模板库(STL)中,有多种容器可供使用。以下是一些常见的容器类型:

序列容器(Sequential Containers):

std::vector:动态数组,支持快速随机访问。
std::list:双向链表,支持高效的插入和删除操作。
std::deque:双端队列,支持在头部和尾部进行高效插入和删除操作。

关联容器(Associative Containers):

std::set:有序集合,按照键值自动排序,不允许重复元素。
std::map:有序映射表,包含键-值对,按照键自动排序,不允许重复键。
std::multiset:有序集合,按照键值自动排序,允许重复元素。
std::multimap:有序映射表,包含键-值对,按照键自动排序,允许重复键。

无序关联容器(Unordered Associative Containers):

std::unordered_set:无序集合,使用哈希表实现,不保证元素顺序,不允许重复元素。
std::unordered_map:无序映射表,使用哈希表实现,不保证元素顺序,不允许重复键。
std::unordered_multiset:无序集合,使用哈希表实现,不保证元素顺序,允许重复元素。
std::unordered_multimap:无序映射表,使用哈希表实现,不保证元素顺序,允许重复键。

容器适配器(Container Adapters):

std::stack:栈(后进先出)。
std::queue:队列(先进先出)。
std::priority_queue:优先队列,按照优先级进行排序。
除了上述容器类型外,C++ STL 还提供了其他一些辅助容器和算法,如 std::bitset(位集合)、std::valarray(数值数组)以及各种算法库(如算法、迭代器和函数对象等),它们可以与容器结合使用以实现更复杂的操作。

在这里插入图片描述

仿函数:比如说,排序默认从小到大排,我们想要实现从大到小排
适配器:比如说,本来函数只能传一个参数,但我们需要传多个参数
空间配置器:最重要但最不需要关心,因为会自动帮我们完成,自动申请内存,自动释放内存

在这里插入图片描述

不同的容器的内存结构是不一样的,数据类型是不一样的,算法通过数据结构操作容器,为每个容器产生一个迭代器,迭代器与容器一 一对应。
在这里插入图片描述

string类

在这里插入图片描述

string是类,类就有数据和方法
在这里插入图片描述

无参构造
拷贝构造
字符串构造
n个元素构造

assign都是统一的复制
在这里插入图片描述

字符串构造:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

append:追加 5个重载
在这里插入图片描述

通俗的理解string的API:

简单理解 std::string 的 API 就是一组用于操作字符串的工具函数或方法。

size():获取字符串的长度,即字符的个数。
empty():检查字符串是否为空,如果为空返回 true,否则返回 false。
substr(pos, len):截取从位置 pos 开始、长度为 len 的子字符串。
append(str):在原字符串末尾添加另一个字符串 str。
erase(pos, len):删除从位置 pos 开始、长度为 len 的子字符串。
replace(pos, len, str):将从位置 pos 开始、长度为 len 的子字符串替换为字符串 str。
find(str, pos):从位置 pos 开始在字符串中查找字符串 str,并返回第一次出现的位置。
rfind(str, pos):从位置 pos 开始在字符串中从后往前查找字符串 str,并返回最后一次出现的位置。

这些方法使得我们可以方便地获取字符串的信息,进行字符串拼接、截取、替换等操作,以及进行字符串的查找和匹配。

通过使用这些 API,我们可以对字符串进行各种常见的处理和操作。

rfind: 从后往前找
在这里插入图片描述

在这里插入图片描述
用成员:
在这里插入图片描述

重载之后的比较会更方便一点:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLM大模型推理加速 vLLM;Qwen vLLM使用案例

参考: https://github.com/vllm-project/vllm https://zhuanlan.zhihu.com/p/645732302 https://vllm.readthedocs.io/en/latest/getting_started/quickstart.html ##文档 1、vLLM 这里使用的cuda版本是11.4,tesla T4卡 加速原理: Paged…

项目招标投标公众号小程序开源版开发

项目招标投标公众号小程序开源版开发 以下是一个招标投标公众号小程序的功能列表: 用户注册与登录:用户可以注册账号并登录公众号小程序。项目发布:用户可以发布招标项目的详细信息,包括项目名称、招标单位、项目描述、招标要求…

巨人互动|游戏出海H5游戏出海规模如何?

H5游戏出海是指将H5游戏推广和运营扩展到国外市场的行为,它的规模受到多个因素的影响。本文小编讲一些关于H5游戏出海规模的详细介绍。 1、市场规模 H5游戏出海的规模首先取决于目标市场的规模。不同国家和地区的游戏市场规模差异很大,有些市场庞大而成…

error:03000086:digital envelope routines::initialization error

项目背景 前端vue项目启动突然报错error:03000086:digital envelope routines::initialization error 我用的开发工具是vscode,node版本是v18.17.0 前端项目版本如下↓ 具体报错如下↓ 报错原因 node版本过高 解决方法 1输入命令 $env:NODE_OPTIONS"--op…

cron介绍

cron表达式在线生成 在使用定时调度任务的时候,我们最常用的,就是cron表达式了。通过cron表达式来指定任务在某个时间点或者周期性的执行。 cron表达式的组成 cron表达式是一个字符串,由6到7个字段组成,用空格分隔。其中前6个字…

融云观察:国内外社交应用差异分析,如何更快补齐功能和切换交互?

9 月 21 日,融云直播课 社交泛娱乐出海最短变现路径如何快速实现一款 1V1 视频社交应用? 欢迎点击上方小程序报名~ 本文中,我们将通过对 WhatsApp、微信、Telegram、Discord 几大社交软件的主要功能和交互体验对比,解析社交软件…

【AIGC专题】Stable Diffusion 从入门到企业级应用0414

一、前言 本文是《Stable Diffusion 从入门到企业级应用实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》的第0414篇 利用Stable Diffusion ControlNet 法线贴图模型精准控制图像生成。本部分内容,位于整个Stable Diffusion生态体…

融云出海:社交泛娱乐出海,「从 0 到 1」最全攻略

9 月 21 日,融云直播课社交泛娱乐出海最短变现路径如何快速实现一款 1V1 视频社交应用? 欢迎点击上方小程序报名~ 本期我们翻到《地图》的实践篇,从赛道/品类选择、目标地区适配、用户增长、变现模式、本地化运营、跨国团队管理等方面完整描绘…

大健云仓:股价正在艰难反弹,被严重低估了

来源:猛兽财经 作者:猛兽财经 业务和基本面 大健云仓(GCT)是一家从事大型家居、家用电器、健身器材和园艺等国际大件商品出口的B2B交易平台,是全球领先的国际贸易数字化服务商。依靠国际化商业架构,自有全球化物流仓储…

Ubuntu20.04同时安装ROS1和ROS2

Ubuntu20.04同时安装ROS1和ROS2 Excerpt 每版的Ubuntu系统版本都有与之对应ROS版本的,每一版ROS都有其对应版本的Ubuntu版本,不可随便装,ubuntu20.04对应ROS1 noetic和ROS2 foxy版本。_ros1和ros2共存 Ubuntu20.04同时安装ROS1和ROS2共存 文…

MES管理系统对电子企业来说有什么优点

引言:在电子制造企业中,MES管理系统已经成为提高生产效率、降低成本、提高订单履行速度和准确性的重要工具。电子企业MES管理系统是一套集成的信息系统,用于监控和控制电子企业的生产过程。本文将探讨MES管理系统对于电子企业来说有哪些优点。…

多线程场景下谨慎使用@Transactional注解,你不信我也没办法

最近遇到一个很诡异的bug,觉得很有趣也很值得分享,于是想写篇文章记录下来,希望有缘人看到以后少踩坑~ 先简单说下场景:有个任务平台,功能很多但我们只关注 提交任务和取消任务 两个功能,并且取消任务后会有…

全民拼购模式:美妆行业的新机遇和挑战

美妆是一个充满创意和变化的行业,每个人都想拥有自己独特的美丽风格。但是,美妆产品的价格和品质却不尽相同,很多消费者在购买时会遇到困惑和不满。有没有一种方法,可以让消费者以更低的价格买到更好的美妆产品,同时还…

八个针对高级职位的高级 JavaScript 面试题

JavaScript 是一种功能强大的语言,是网络的主要构建块之一。这种强大的语言也有一些怪癖。例如,您是否知道 0 -0 的计算结果为 true,或者 Number("") 的结果为 0? 问题是,有时这些怪癖会让你摸不着头脑&…

了解 glTF 2.0 格式

推荐:使用 NSDT场景编辑器快速搭建3D应用场景 介绍 glTF 代表 GL 传输格式。 glTF 是一种用于存储和加载 3D 场景的标准化文件格式,其基本目的是由 3D 创建工具轻松生成并被任何图形应用程序使用,无论使用何种 API,处理最少。 …

软考(1)-面向对象的概念

目录 一. 软考基本信息 1. 软考时间: 2. 软考科目: 3.专业知识介绍 -- 综合知识考点分布 4. 专业介绍 -- 软件设计考点分布 二. 面向对象概念 1. 封装 考点一:对象 考点二:封装private 2. 继承 考点三:类 考…

python初阶

基本类型 int float str bool list--列表 [1,2,3] tuple--元组 (1,2,3) set---集合 {1,2,3} dict---字典 {1:”python","acwing":2,3:4.0}int支持高精度,没有大小限制 赋值 a3 b3.0 c‘s’ d“asdf” 单引号和双引号是没有区别…

macos 不支持svn安装

macos 10.13可能不支持svn命令,所以要安装 xcode-select --install 弹窗在线安装失败的话只能手动下载安装 打开:Sign In - Apple 搜索Command Line Tools (macOS 10.13) 下载9.4.1版本直接安装后即可

每天一个工业通信协议(4)2023.8.30 (I2C接口)

文章目录 参考文献1.I2C介绍2.I2C接口2.1 位传输,识别2.2 传输数据3.I2C的电气连接参考文献 广州周立功单片机发展有限公司 《I2C总线规范》 1.I2C介绍 为了使这些相似之处对系统设计者和器件厂商都得益 而且使硬件效益最大电路最简单 Philips 开发了一个简单的双向两线总线…

L1-012 计算指数 C++

#include<iostream> #include<math.h> using namespace std; int main() {int n;int ret;cin >> n;if (n < 10) {ret pow(2, n);cout << "2^" << n << " " << ret<<endl;}return 0; } 所用知识点 …