C++常用类

C++常用类

  • [1. std::string类](#1. std::string类)
  • [2. std::vector 类](#2. std::vector 类)
    • [2.1 特性](#2.1 特性)
    • [2.2 用法](#2.2 用法)

1. std::string类

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

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

创建字符串

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

访问字符串

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

修改字符串

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

字符串比较

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

查找字符串

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

字符串长度

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

字符串截取

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

字符串插入

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

字符串删除

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

2. std::vector 类

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

在使用 vector 之前,需要包含相应的头文件:

cpp 复制代码
#include <vector>

2.1 特性

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

2.2 用法

创建 vector

cpp 复制代码
std::vector<int> vec; // 创建一个空的 int 类型 vector
std::vector<std::string> strVec; // 创建一个空的 string 类型 vector

添加元素

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

cpp 复制代码
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);

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

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

访问元素

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

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

删除元素

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

cpp 复制代码
vec.pop_back(); // 删除末尾元素

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

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

遍历元素

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

cpp 复制代码
// 使用迭代器遍历
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << ' ';
}
cpp 复制代码
// 使用范围 for 循环遍历
for (int num : vec) {
    std::cout << num << ' ';
}
相关推荐
一叶之秋14126 分钟前
告别浅层调用:深入模拟实现STL Stack/Queue/Priority_Queue,知其所以然
c++·stl
耶耶耶耶耶~15 分钟前
关于软件开发的一些思考
c++
量子炒饭大师16 分钟前
【C++入门】Cyber骇客构造器的核心六元组 —— 【类的默认成员函数】明明没写构造函数也能跑?保姆级带你掌握六大类的默认成员函数(上:函数篇)
开发语言·c++·dubbo·默认成员函数
charlie11451419125 分钟前
嵌入式C++开发——RAII 在驱动 / 外设管理中的应用
开发语言·c++·笔记·嵌入式开发·工程实践
Fcy64826 分钟前
C++11 新增特性(中)
开发语言·c++·c++11·可变参数模版·c++11 类的新增功能·c++11slt新增特性
恒者走天下26 分钟前
计算机想学习某个方向,怎么知道学习路线
c++
小尧嵌入式37 分钟前
【Linux开发五】条件变量|信号量|生产者消费者模型|信号概念和常见信号|信号的使用和处理
linux·运维·服务器·开发语言·c++·嵌入式硬件
智者知已应修善业41 分钟前
【输出方形点阵】2024-11-1
c语言·c++·经验分享·笔记·算法
hope_wisdom43 分钟前
C/C++数据结构之用数组实现队列
c语言·数据结构·c++·队列
近津薪荼1 小时前
优选算法——双指针专题2(模拟)
c++·学习·算法