C++基础(11)——STL(基本概念和string)

news2024/11/25 22:46:45

前言

本文主要介绍C++中STL基本知识和string类

7.1:初识STL

7.1.1:STL六大组件

算法要通过迭代器来访问容器中的数据

STL的六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器

1.容器:各种数据结构,如vector、list、dequeue、set、map等用来存放数据

2.算法:各种常用的算法,如sort、find、copy、for_each等

3.迭代器:扮演了容器与算法之间的胶合剂

4.仿函数:行为类似函数,可以作为算法的某种策略

5.适配器:一种用来修饰容器或者仿函数或者、迭代器接口的东西

6.空间适配器:负责空间的配置和管理

7.1.2:vector存放内置数据类型

容器:vector     算法:for_each       迭代器:vector<int>::iterator

第一种遍历方式:通过while循环

第二种遍历方式:for循环

第三种遍历方式:使用STL中的for_each遍历算法

for_each的具体实现,记住,模板函数可以自动推导参数的类型,模板类不可以

7.1.3:vector容器存放自定义数据类型

当name和age是private类型时,使用友元全局函数进行访问

使用for循环进行访问,注意指针、结构体引用的问题(这里将name,和age改成public了,因为for里面不能访问private类型的成员属性)

7.1.4:容器嵌套容器

问题就是相当于如何通过指针访问二维数组里的数据?

使用for_each语句实现二维数组数据扫描,传入给printArr()函数的参数是*v,就是一个容器,所以要用一个容器来接收参数。容器套容器指针解出来是容器,容器解出来才是数据。

7.2:string相关

7.2.1:string的构造函数

7.2.2:string的赋值操作函数(=、assign)

直接使用等号或使用成员函数assign

7.2.3:string字符串拼接相关(+=、append)

使用+=运算符重载或者append成员函数

append(str, pos, n),pos表示str的第几个位置,n表示截取的长度

7.2.4:string的查找和替换(find、rfind、replace)

 

 replace不同参数使用的一些情况

7.2.4:string字符串比较(compare)

7.2.5:string字符串的存取([]和at)

使用[]或者成员函数at都可以访问到字符串里的数据,和C语言中的字符指针操作是一样的

[]和at之间的区别

底层实现方面,[]操作符直接通过指针偏移来访问字符串中的单个字符,效率较高。而at()函数则会先进行边界检查,如果越界则抛出异常,效率较低。因此,在不需要进行边界检查的情况下,应该优先使用[]操作符。

7.2.6:字符串的插入和删除(insert、erase)

string类中的成员函数size()求出的字符串长度不包含字符串结束符’\0’,其功能和C语言中的strlen()是一样的

7.2.7:string中获取子串(substr)

substr(pos, n),pos代表开始截取的位置,n代表要截取的字符个数

Makefile中的subst

配合find()来获取qq邮箱中的qq号

 

总结

以上就是本文的全部内容,非常感谢你能看到这

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

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

相关文章

2.9 epoll的实现原理

目录 一、epoll的数据结构1、epoll的数据结构选择2、epoll数据结构图 二、epoll的线程安全三、epoll的内核回调epoll 回调函数epoll回调时机 四、epoll的用户态接口epoll_createepoll_ctl epoll_wait 五、epoll的LT和ET 在前文已经基于dpdk实现了用户态协议栈&#xff0c;但是有…

编译原理笔记(哈工大编译原理)(及格版)

文章目录 前言概论语言与文法基本概念字母表串字母表与串的联系 文法语言推导和规约句型与句子语言与字母表 文法的分类CFG的分析树 词法分析正则式正则定义有穷自动机&#xff08;FA&#xff09;DFANFAFA之间的等价性 从RE到DFARE转NFANFA确定化&#xff1a;子集法DFA最小化&a…

Vue.js 内部运行机制

在 new Vue() 之后。 Vue 会调用 _init 函数进行初始化,也就是这里的 init 过程,它会初始化生命周期、事件、 props、 methods、 data、 computed 与 watch 等。其中最重要的是通过 Object.defineProperty 设置 setter 与 getter 函数,用来实现「响应式」以及「依赖收集」,…

spring boot 运行报错: 找不到或无法加载主类

原文地址&#xff1a;spring boot 运行报错: 找不到或无法加载主类 - 走看看 一&#xff1a;当在eclipse启动spring boot项目时出现问题&#xff1a; springboot错误: 找不到或无法加载主类 解决办法&#xff1a; 1&#xff0c;通过cmd命令行&#xff0c;进入项目目录进行&am…

Linux5.7 MySQL 高级(进阶) SQL 语句

文章目录 计算机系统5G云计算第四章 LINUX MySQL 高级(进阶) SQL 语句一、高级SQL 语句1&#xff09;SELECT2&#xff09;DISTINCT3&#xff09;WHERE4&#xff09;AND OR5&#xff09;IN6&#xff09;BETWEEN7&#xff09;通配符8&#xff09;LIKE9&#xff09;ORDER BY10&…

【软件测试面试题】offer又失之交臂?项目经验项目描述看这个篇就够了

前言 我们测试人员在找工作中&#xff0c;基本都会碰到让介绍项目的这种面试题。 如何正确介绍自己的项目&#xff1f;需要做哪些技术准备&#xff1f; 关于介绍自己的项目&#xff1f; 可以从以下几个方面来表述&#xff1a; 项目基本介绍&#xff1a;项目架构、项目业务流…

如何模拟一个僵尸进程

原理 子进程先于父进程退出&#xff0c;父进程还在继续运行&#xff0c;且没有调用wait函数。 实验代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <errno.h>#define _DEBUG_INFO #ifdef _DEB…

Zabbix“专家坐诊”第196期问答汇总

问题一 Q&#xff1a;统计一个主机群组里&#xff0c;值为A的某个监控项的个数&#xff0c;函数应该怎么写&#xff1f; A&#xff1a;参考&#xff1a; https://www.zabbix.com/documentation/6.0/zh/manual/config/items/itemtypes/calculated/aggregate。 Q&#xff1a;文…

零基础如何学习 Web 安全,如何让普通人快速入门网络安全?

前言 网络安全现在是朝阳行业&#xff0c;缺口是很大。不过网络安全行业就是需要技术很多的人达不到企业要求才导致人才缺口大 【一一帮助安全学习&#xff08;网络安全面试题学习路线视频教程工具&#xff09;一一】 初级的现在有很多的运维人员转网络安全&#xff0c;初级…

lammps案例:原子倒入容器

本文介绍lammps向体系内动态添加原子的一种方法。 在绝大多数的分子动力学模拟过程中&#xff0c;原子数量保持恒定。 如果需要按一定步数动态的减少原子&#xff0c;可参考&#xff1a; 删除蒸发原子 动态的增加原子&#xff0c;可以使用fix deposit沉积命令&#xff1a; 沉积…

《Stable Diffusion WebUI折腾实录》在Windows完成安装, 从社区下载热门模型,批量生成小姐姐图片

环境 操作系统: Windows11 显卡: RTX2060 6GB 显存 安装Python 下载 Python3.10.6 https://www.python.org/ftp/python/3.10.6/python-3.10.6-amd64.exe安装 注意勾选 Add Python 3.10.6 to PATH &#xff0c;然后一路下一步即可 打开powershell&#xff0c; 确认安装成功 …

Opencv项目实战:23 智能计数和表单信息

目录 0、项目介绍 1、效果展示 2、项目搭建 3、项目代码展示与部分讲解 拍照脚本data_collection.py 图片检测Picdetect.py 摄像头检测Videodetect.py 主函数CountMain.py 自定义模块tally.py 4、项目资源 5、项目总结 0、项目介绍 有一段时间没有更新专栏了&#…

“专精特新”企业数字化转型,如何激发增长新动能

随着数字技术的不断发展&#xff0c;越来越多的企业开始意识到数字化转型的重要性。对于专精特新的企业来说&#xff0c;数字经济的发展也同样给中小企业带来难得的发展机遇&#xff0c;数字化在助力中小企业降本、增效和提质方面发挥着日益重要的作用&#xff0c;数字化转型已…

英伟达发布GeForce 536.23游戏驱动,一键快速获取

英伟达又赶在6月发布了一款超强游戏驱动&#xff0c;NVIDIA GeForce 536.23 WHQL&#xff0c;并有两款游戏大作宣布&#xff0c;首发日即支持 NVIDIA DLSS 2 和 NVIDIA Reflex&#xff0c;驱动人生带大家一起了解一下这款NVIDIA GeForce 536.23 WHQ驱动&#xff0c;以及获取英伟…

Linux【系统学习】(命令及虚拟机篇-无shell)

目录 第 1 章 Linux 入门 1.1 概述 1.2 Linux 和 Windows 区别 ​编辑 1.3 CentOS 下载地址 第 2 章 VM 与 Linux 的安装 2.1 VMWare 安装 CentOS 安装 第 3 章 Linux 文件与目录结构 3.1 Linux 文件 3.2 Linux 目录结构 第 4 章 VI/VIM 编辑器&#xff08;重要&…

智能客服机器人:基于知识图谱的多轮对话系统

━━━━ 近年来&#xff0c;随着人工智能的快速发展&#xff0c;人机交互能力不断增强&#xff0c;其中问答技术能够在保证一定准确度的情况下极大地简化用户的搜索操作&#xff0c;在节约时间的同时&#xff0c;还能够加深用户对搜索事物的了解程度&#xff0c;百度公司的小…

一篇文章搞定《Android中View的绘制流程》

一篇文章搞定《CoordinatorLayout完成电商首页》 本文前言怎样到达ViewRootImpl过程如下&#xff1a;流程图小结&#xff1a; 到达ViewRootImpl做了什么第一步&#xff1a;setView()第二步&#xff1a;performTraversals()第三步&#xff1a;DecorView中的Measure()、Layout()、…

nginx配置代理报错

1.背景 因部署需要将项目用nginx进行二次转发访问&#xff0c;配置过程中出现各种报错&#xff0c;现将记录如下 Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as.... 2.nginx配置如下 upstream wuhan1 {#server 19…

【SpringBoot】整合Elasticsearch 操作索引及文档

官网操作文档&#xff1a;Elasticsearch Clients | Elastic 踩坑太多了。。。这里表明一下Spring Boot2.4以上版本可能会出现问题&#xff0c;所以我降到了2.2.1.RELEASE。对于现在2023年6月而言&#xff0c;Es版本已经到了8.8&#xff0c;而SpringBoot版本已经到了3.x版…

Hyper-v 虚拟机挂载物理硬盘的方法-Windows Server 2022/2025

起因&#xff1a; 之前我写过一篇介绍在KVM虚拟机体系下&#xff0c;如何直接挂载物理硬盘和物理分区的方法&#xff1a;KVM虚拟机直接挂栽物理硬盘分区的方法_给libvirt虚机挂载磁盘_lggirls的博客-CSDN博客。近期帮助一个朋友搭建局域网&#xff0c;其中有OA系统要用到window…