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

C++常用类

C++常用类

  • 1. std::string类
  • 2. std::vector 类
    • 2.1 特性
    • 2.2 用法

1. std::string类

std::string 是 C++ 标准库中的一个类,用于处理字符串。它提供了许多方法来创建、操作和管理字符串,如连接、查找、比较、替换和分割等操作。std::string 类定义在 头文件中。

  • std::string 类的基本用法示例:

创建字符串

std::string str1 = "Hello, World!"; // 通过字面量初始化
std::string str2(str1); // 通过另一个 string 对象初始化
std::string str3(10, 'a'); // 创建一个包含 10 个 'a' 的字符串

访问字符串

char firstChar = str1[0]; // 通过索引访问字符
std::cout << str1.c_str() << std::endl; // 将 string 转换为 C 风格字符串并打印

修改字符串

str1 += "!"; // 连接字符串
str1.append(" again!"); // 另一种连接字符串的方法
str1[0] = 'h'; // 修改第一个字符
str1.replace(7, 6, "C++"); // 从索引 7 开始,替换 6 个字符为 "C++"

字符串比较

if (str1 == str2) {// 如果 str1 等于 str2,执行这里
}
if (str1 < str2) {// 如果 str1 小于 str2,执行这里
}

查找字符串

size_t pos = str1.find("World"); // 查找 "World" 的位置
if (pos != std::string::npos) {// 如果找到了,执行这里
}

字符串长度

size_t len = str1.length(); // 获取字符串长度
// 或者
size_t size = str1.size(); // 这与 length() 是等效的

字符串截取

std::string substr = str1.substr(7, 5); // 从索引 7 开始,截取 5 个字符

字符串插入

str1.insert(7, "C++"); // 在索引 7 的位置插入 "C++"

字符串删除

str1.erase(7, 5); // 从索引 7 开始,删除 5 个字符

2. std::vector 类

vector 类是 C++ 标准模板库 (STL) 中的一个非常常用的容器类,它提供了动态数组的功能。vector 容器可以存储同一类型的元素序列,并且可以自动处理元素的存储和内存分配。vector 类提供了很多有用的成员函数,如添加、删除、访问和遍历元素等。
在使用 vector 之前,需要包含相应的头文件:

#include <vector>

2.1 特性

  1. 动态大小:vector 可以随着元素的添加而自动增长,也可以随着元素的删除而自动缩小。
  2. 连续存储:vector 中的元素在内存中是连续存储的,因此可以像数组一样通过下标直接访问任意元素,时间复杂度为 O(1)。
  3. 随机访问迭代器:由于 vector 中的元素是连续存储的,因此可以使用随机访问迭代器来访问元素。

2.2 用法

创建 vector

std::vector<int> vec; // 创建一个空的 int 类型 vector
std::vector<std::string> strVec; // 创建一个空的 string 类型 vector

添加元素
使用 push_back() 函数在末尾添加元素:

vec.push_back(1);
vec.push_back(2);
vec.push_back(3);

使用 insert() 函数在指定位置插入元素:cpp

vec.insert(vec.begin() + 1, 4); // 在第二个位置插入 4

访问元素
使用下标运算符 [] 或 at() 函数来访问元素:

int first = vec[0]; // 访问第一个元素
int second = vec.at(1); // 访问第二个元素

删除元素
使用 pop_back() 函数删除末尾元素:

vec.pop_back(); // 删除末尾元素

使用 erase() 函数删除指定位置的元素或元素范围:

vec.erase(vec.begin() + 1); // 删除第二个元素
vec.erase(vec.begin() + 2, vec.end() - 1); // 删除从第三个元素到倒数第二个元素的范围

遍历元素
可以使用迭代器或范围 for 循环来遍历 vector 中的元素:

// 使用迭代器遍历
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {std::cout << *it << ' ';
}
// 使用范围 for 循环遍历
for (int num : vec) {std::cout << num << ' ';
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C语言】typedef 关键字
  • 【图解大数据技术】Hive、HBase
  • 代码随想录算法训练营DAY55|42. 接雨水、84.柱状图中最大的矩形
  • C++:std::function的libc++实现
  • 极简通俗VAE
  • linux驱动编程 - kfifo先进先出队列
  • pytorch-时间序列
  • Sass 语法
  • 【Python文件】操作终极指南:高效管理和处理文件系统的必备技能
  • 七、MyBatis-Plus高级用法:最优化持久层开发-个人版
  • ChatGPT对话:按ESC键退出Python程序
  • NSSCTF-Web题目24(RCE-空格绕过、过滤绕过)
  • python类继承和类变量
  • mac上挂载linux目录
  • 使用Livox-Mid360激光雷达,复现FAST_LIO(保姆级教程)
  • python3.6+scrapy+mysql 爬虫实战
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Javascript设计模式学习之Observer(观察者)模式
  • JAVA多线程机制解析-volatilesynchronized
  • KMP算法及优化
  • MySQL几个简单SQL的优化
  • Spring Cloud中负载均衡器概览
  • windows下使用nginx调试简介
  • 从输入URL到页面加载发生了什么
  • 记录:CentOS7.2配置LNMP环境记录
  • 你真的知道 == 和 equals 的区别吗?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 小程序测试方案初探
  • 学习JavaScript数据结构与算法 — 树
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • kubernetes资源对象--ingress
  • 阿里云ACE认证学习知识点梳理
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 我们雇佣了一只大猴子...
  • #LLM入门|Prompt#3.3_存储_Memory
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (160)时序收敛--->(10)时序收敛十
  • (bean配置类的注解开发)学习Spring的第十三天
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (不用互三)AI绘画工具应该如何选择
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (三)uboot源码分析
  • (算法)求1到1亿间的质数或素数
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • ::什么意思
  • [1181]linux两台服务器之间传输文件和文件夹
  • [20171101]rman to destination.txt