当前位置: 首页 > news >正文

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

在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: 从后往前找
在这里插入图片描述

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

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

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

在C的标准模板库(STL)中,有多种容器可供使用。以下是一些常见的容器类型: 序列容器(Sequential Containers): std::vector:动态数组,支持快速随机访问。 std::list&…...

《人生苦短,我学Python》——条件判断->(if-elif-else)多向选择 条件嵌套

今天,我们来学习多向选择!if--elif--else if 后的语句是当 if 判断条件成立时,执行的操作。elif 后的语句是当 if 判断不成立时,再判断一次,如果成立,执行的操作。else 后的语句是当以上所有判断条件都不成…...

MongoDB 数据库性能优化技巧

原文:MongoDB 数据库性能优化技巧 (techdatafuture.com) MongoDB 是一款灵活且可扩展的NoSQL数据库,为了提高其性能,我们可以采取一些优化技巧。本文将介绍一些MongoDB性能优化的关键点,包括索引的使用、查询优化、数据模型设计和…...

网络安全人才缺口超百万,如今的就业情况怎样?

网络安全人才缺口超百万,如今的就业情况怎样? 2022年9月7日,国家网络安全宣传周准时开始。本次网络安全宣传周和以前一样,主要目的都是为了普及网络安全知识,提高网络安全的防护技能,提升对电信网络诈骗的…...

「MySQL」MySQL面试题全解析:常见问题与高级技巧详解

MySQL面试题全解析:常见问题与高级技巧详解 1. 什么是数据库?2. 什么是MySQL?3. 什么是SQL?4. 什么是主键?5. 什么是外键?6. 请解释索引是什么以及为什么使用索引?7. 什么是事务?8. …...

【USRP】产品型号、参数、架构全解析系列 6:N320 / N321

一、USRP 简介 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发,被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&am…...

Apifox 常用 JS 脚本

前置脚本常用 1、时间戳生成(秒级): // 1、生成秒级时间戳到全局变量中 //let timestamp parseInt(new Date().getTime() / 1000) //pm.globals.set(timestamp, timestamp) // 2、生成秒级时间戳到全局变量中 pm.globals.set(timestamp, p…...

防止SQL注入的四种方案

一、什么是SQL注入? SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服…...

java单元测试

版本区别 特性Junit 4Junit 5在当前类的所有测试方法之前执行。注解在静态方法上。此方法可以包含一些初始化代码。BeforeClassBeforeAll在当前类中的所有测试方法之后执行。注解在静态方法上。此方法可以包含一些清理代码。AfterClassAfterAll在每个测试方法之前执行。注解在…...

【LeetCode】双指针求解和为s的两个数字

Problem: 剑指 Offer 57. 和为s的两个数字 文章目录 题目解析算法思路分析复杂度Code 题目解析 首先来讲解一下本题的思路 我们看到本题的意思很简单,就是去这个nums这个数组中进行寻找,如果找到了两个数相加之和为target的话,那构成一个结果…...

opencv识别一张图片的多个红框,并截取红框的内容

需求 需要获取图片的红框的内容,实体的图片我就不放了 获取红框 先截取获得图片的多个轮廓 import cv2 import numpy as np # 加载图像并转换为灰度图像 image cv2.imread(image6.jpg) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用高斯模糊以减…...

数据库-事务

介绍: 事务是一组操作的集合,它是一个不可分割的工作单位,事物会把所有的操作作为一个整体一起向系统 提交或撤销操作请求,即这些操作要么同时成功,要么同时失败 操作:事务控制 开启事务:start…...

MySQL 使用开源审计插件

文章目录 前言1. 审计插件下载2. 审计插件参数2.1 server_audit_events2.2 server_audit_excl_users2.3 server_audit_output_type2.4 server_audit_file_path2.5 server_audit_file_rotate_now2.6 server_audit_file_rotate_size2.7 server_audit_file_rotations2.8 server_au…...

Python入门教程 | Python3 集合(Set)

Python3 集合(Set) 集合(set)是一个无序的不重复元素序列。 集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。 可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法2.0

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多…...

【C++模拟实现】反向迭代器的实现

【C模拟实现】反向迭代器的实现 目录 【C模拟实现】反向迭代器的实现反向迭代器的代码示例反向迭代器的模拟实现要点引入iterator模版参数rbegin()和rend()的实现 作者:爱写代码的刚子 时间:2023.9.5 前言:本篇博客主要介绍反向迭代器的实现&…...

Kubernetes技术--k8s核心技术持久化存储

有时候需要在集群中进行一些重要的数据进行持久化存储,然后需要的时候再进行挂载,那么下面我们一起来看看如何实现数据的持久化存储操作。 1.nfs网络存储 -1.找一台服务器做nfs的服务端,安装nfs。(这里我们直接在master上实现)。 这里应该找再单独的搭建一个node节点做持…...

【80天学习完《深入理解计算机系统》】第十四天 复习第三章

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…...

库中是如何实现string类的?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…...

无涯教程-JavaScript - WORKDAY.INTL函数

描述 WORKDAY.INTL函数返回带有自定义周末参数的指定工作日数之前或之后的日期的序列号。周末参数指示哪些和多少天是周末。周末和指定为假期的任何日子均不视为工作日。 语法 WORKDAY.INTL (start_date, days, [weekend], [holidays])争论 Argument描述Required/OptionalS…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

抽象类和接口(全)

一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

32单片机——基本定时器

STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...

Tauri2学习笔记

教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...