目录
1.字符串 (std::string): 用于处理文本字符串。
下面是一个 C++ 中字符串的示例程序,展示了如何使用标准库中的 std::string 类进行字符串的初始化、操作和比较。
#include <iostream>
#include <string>
int main() {
// 字符串初始化
std::string str1 = "Hello";
std::string str2 = "World";
// 输出字符串
std::cout << "字符串1: " << str1 << std::endl;
std::cout << "字符串2: " << str2 << std::endl;
// 字符串连接
std::string combined = str1 + " " + str2;
std::cout << "连接后的字符串: " << combined << std::endl;
// 字符串长度
std::cout << "字符串1的长度: " << str1.length() << std::endl;
std::cout << "字符串2的长度: " << str2.length() << std::endl;
// 字符串比较
if (str1 == str2) {
std::cout << "字符串1和字符串2相等。" << std::endl;
} else {
std::cout << "字符串1和字符串2不相等。" << std::endl;
}
// 查找子字符串
std::string substring = "lo";
if (str1.find(substring) != std::string::npos) {
std::cout << "字符串1包含子字符串: " << substring << std::endl;
} else {
std::cout << "字符串1不包含子字符串: " << substring << std::endl;
}
// 修改字符串
str1.replace(1, 3, "ell"); // 将 "e" 替换为 "ell"
std::cout << "修改后的字符串1: " << str1 << std::endl;
// 字符串转为C风格字符串
const char* cstr = str1.c_str();
std::cout << "字符串1的C风格表示: " << cstr << std::endl;
return 0;
}
说明
字符串初始化:
使用 std::string 类型定义和初始化字符串 str1 和 str2。
输出字符串:
使用 std::cout 输出字符串的内容。
字符串连接:
使用 + 操作符将两个字符串连接在一起,形成一个新字符串 combined。
字符串长度:
使用 length() 方法获取字符串的长度并输出。
字符串比较:
使用 == 运算符比较两个字符串的内容,并输出比较结果。
查找子字符串:
使用 find() 方法查找 str1 中是否包含子字符串 lo,并输出结果。
修改字符串:
使用 replace() 方法修改字符串的部分内容,将字符替换为其他字符串。
C 风格字符串:
使用 c_str() 方法将 std::string 转换为 C 风格字符串(字符数组),并输出其内容。
2.容器: 如 std::vector、std::list、std::map 等,用于存储和管理数据集合
2.1 std::vector容器
下面是一个 C++ 中使用 std::vector 的示例程序,展示了如何定义、初始化、添加、访问和遍历 std::vector。
#include <iostream>
#include <vector>
int main() {
// 定义一个整数类型的 vector
std::vector<int> numbers;
// 向 vector 中添加元素
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
numbers.push_back(40);
numbers.push_back(50);
// 输出 vector 的大小
std::cout << "vector 的大小: " << numbers.size() << std::endl;
// 访问 vector 中的元素
std::cout << "vector 中的元素: ";
for (size_t i = 0; i < numbers.size(); ++i) {
std::cout << numbers[i] << " "; // 使用下标访问
}
std::cout << std::endl;
// 使用迭代器遍历 vector
std::cout << "使用迭代器遍历 vector: ";
for (std::vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) {
std::cout << *it << " "; // 通过迭代器访问
}
std::cout << std::endl;
// 删除最后一个元素
numbers.pop_back();
std::cout << "删除最后一个元素后,vector 的大小: " << numbers.size() << std::endl;
// 清空 vector
numbers.clear();
std::cout << "清空后,vector 的大小: " << numbers.size() << std::endl;
// 重新添加元素
numbers.push_back(100);
numbers.push_back(200);
std::cout << "重新添加元素后,vector 中的元素: ";
for (const int &num : numbers) {
std::cout << num << " "; // 使用范围 for 循环
}
std::cout << std::endl;
return 0;
}
说明
定义和初始化:
使用 std::vector 定义一个整数类型的动态数组 numbers。
添加元素:
使用 push_back() 方法向 vector 中添加元素。
输出大小:
使用 size() 方法获取 vector 的当前大小,并输出。
访问元素:
使用下标访问 vector 中的元素,并遍历输出。
使用迭代器遍历:
使用迭代器遍历 vector,并输出每个元素的值。
删除元素:
使用 pop_back() 方法删除 vector 中的最后一个元素,并输出新大小。
清空 vector:
使用 clear() 方法清空 vector 中的所有元素,并再次输出大小。
重新添加元素:
重新向 vector 中添加元素,并使用范围 for 循环输出所有元素。
2.2 std::list容器
下面是一个 C++ 中使用 std::list 的示例程序,展示了如何定义、初始化、添加、访问和遍历 std::list。
#include <iostream>
#include <list>
int main() {
// 定义一个整数类型的 list
std::list<int> numbers;
// 向 list 中添加元素
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
numbers.push_back(40);
numbers.push_back(50);
// 输出 list 的大小
std::cout << "list 的大小: " << numbers.size() << std::endl;
// 输出 list 中的元素
std::cout << "list 中的元素: ";
for (const int& num : numbers) {
std::cout << num << " "; // 使用范围 for 循环
}
std::cout << std::endl;
// 在 list 的前面插入一个元素
numbers.push_front(5);
std::cout << "插入后,list 中的元素: ";
for (const int& num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
// 删除 list 中的一个元素
numbers.remove(30);
std::cout << "删除 30 后,list 中的元素: ";
for (const int& num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
// 访问第一个和最后一个元素
std::cout << "第一个元素: " << numbers.front() << std::endl;
std::cout << "最后一个元素: " << numbers.back() << std::endl;
// 清空 list
numbers.clear();
std::cout << "清空后,list 的大小: " << numbers.size() << std::endl;
return 0;
}
说明
定义和初始化:
使用 std::list 定义一个整数类型的双向链表 numbers。
添加元素:
使用 push_back() 方法向 list 的末尾添加元素。
使用 push_front() 方法向 list 的前面添加元素。
输出大小:
使用 size() 方法获取 list 的当前大小,并输出。
输出元素:
使用范围 for 循环遍历 list 中的元素,并输出它们的值。
删除元素:
使用 remove() 方法删除 list 中指定的元素(如 30),并输出新的元素列表。
访问元素:
使用 front() 方法获取 list 的第一个元素,使用 back() 方法获取最后一个元素,并输出。
清空 list:
使用 clear() 方法清空 list 中的所有元素,并输出清空后的大小。
2.3 std::map容器
下面是一个 C++ 中使用 std::map 的示例程序,展示了如何定义、初始化、插入、访问和遍历 std::map。
#include <iostream>
#include <map>
int main() {
// 定义一个整数到字符串的 map
std::map<int, std::string> studentMap;
// 向 map 中插入元素
studentMap[101] = "Alice";
studentMap[102] = "Bob";
studentMap[103] = "Charlie";
studentMap[104] = "Diana";
// 输出 map 的大小
std::cout << "map 的大小: " << studentMap.size() << std::endl;
// 遍历 map 中的元素
std::cout << "学生 ID 和姓名: " << std::endl;
for (const auto& pair : studentMap) {
std::cout << "ID: " << pair.first << ", 姓名: " << pair.second << std::endl;
}
// 访问特定的元素
int idToFind = 102;
if (studentMap.find(idToFind) != studentMap.end()) {
std::cout << "找到学生 ID " << idToFind << ": " << studentMap[idToFind] << std::endl;
} else {
std::cout << "学生 ID " << idToFind << " 不存在。" << std::endl;
}
// 删除一个元素
studentMap.erase(103);
std::cout << "删除 ID 103 后的学生列表: " << std::endl;
for (const auto& pair : studentMap) {
std::cout << "ID: " << pair.first << ", 姓名: " << pair.second << std::endl;
}
// 清空 map
studentMap.clear();
std::cout << "清空后,map 的大小: " << studentMap.size() << std::endl;
return 0;
}
说明
定义和初始化:
使用 std::map<int, std::string> 定义一个从学生 ID(整数)到学生姓名(字符串)的映射。
插入元素:
使用下标操作符向 map 中插入元素,定义学生 ID 和姓名。
输出大小:
使用 size() 方法获取 map 的当前大小,并输出。
遍历元素:
使用范围 for 循环遍历 map 中的所有键值对,并输出它们的内容。
访问特定元素:
使用 find() 方法查找特定的学生 ID,并输出对应的姓名。如果 ID 不存在,输出相应的提示。
删除元素:
使用 erase() 方法删除指定的学生 ID,随后遍历并输出剩余的学生信息。
清空 map:
使用 clear() 方法清空 map 中的所有元素,并输出清空后的大小。