📅  最后修改于: 2023-12-03 14:39:53.040000             🧑  作者: Mango
C++ STL(标准模板库)是一个强大的 C++ 库,提供了一系列通用的数据结构和算法,可以大大简化代码的编写。本文将重点介绍其中几个常用的库。
vector 是一种动态数组,是 C++ STL 中最常用的一种容器。它的主要特点是支持快速的随机访问、在尾部插入和删除元素以及自动扩容。
#include <vector>
std::vector<int> vec;
// 在尾部插入元素
vec.push_back(10);
vec.push_back(20);
// 访问元素
std::cout << vec[0] << std::endl; // 10
// 遍历数组
for (auto x : vec) {
std::cout << x << " ";
}
// 输出:10 20
// 删除尾部元素
vec.pop_back();
list 是一种双向链表。它的主要特点是支持在任意位置插入和删除元素,但是不支持随机访问。
#include <list>
std::list<int> li;
// 在尾部插入元素
li.push_back(10);
li.push_back(20);
// 在任意位置插入元素
auto it = li.begin();
++it;
li.insert(it, 15);
// 遍历链表
for (auto x : li) {
std::cout << x << " ";
}
// 输出:10 15 20
// 删除任意位置的元素
it = li.begin();
++it;
li.erase(it);
set 是一种集合,其中的元素按照一定的顺序排列,且不含重复元素。
#include <set>
std::set<int> s;
// 插入元素
s.insert(10);
s.insert(20);
s.insert(10); // 这个元素不会被插入,因为有重复元素
// 遍历集合
for (auto x : s) {
std::cout << x << " ";
}
// 输出:10 20
// 查找元素
auto it = s.find(10);
if (it != s.end()) {
std::cout << "元素找到了!" << std::endl;
}
// 删除元素
s.erase(20);
map 是一种顺序映射,将某种类型的键映射到另一种类型的值上,且键不含重复元素。
#include <map>
std::map<std::string, int> mp;
// 插入键值对
mp["Alice"] = 20;
mp["Bob"] = 30;
mp["Alice"] = 40; // 这里会用新的值覆盖原来的值
// 遍历 map 中的键值对
for (auto p : mp) {
std::cout << p.first << " " << p.second << std::endl;
}
// 输出:Alice 40
// Bob 30
// 查找键对应的值
auto it = mp.find("Alice");
if (it != mp.end()) {
std::cout << "Alice 的值为:" << it->second << std::endl;
}
// 删除键值对
mp.erase("Alice");
以上介绍的仅仅是 C++ STL 中的一小部分,还有很多其他的库和算法可以使用。使用 STL 能够大大提高代码的效率和可读性,同时也能使代码更加简洁、更易维护。