C++ 容器是标准模板库(STL)的一部分,提供用于存储和组织数据的数据结构。有多种类型的容器,每种都有其特性和用例。在这里,我们讨论一些常用的容器:
Vector 是动态数组,可以根据需要调整自身大小。它们将元素存储在连续的内存位置中,允许使用索引进行快速随机访问。
#include <iostream> #include <vector>
int main() { std::vector<int> vec = {1, 2, 3, 4, 5};
vec.push_back(6); // 在末尾添加一个元素
std::cout << "Vector 包含:"; for (int x : vec) { std::cout << ' ' << x; } std::cout << '\n'; }
List 是双向链表,允许在任意位置以常数时间插入或删除元素。它不支持随机访问。在需要频繁在中间插入或删除元素的场景中,List 比 Vector 更好。
#include <iostream> #include <list>
int main() { std::list<int> lst = {1, 2, 3, 4, 5};
lst.push_back(6); // 在末尾添加一个元素
std::cout << "List 包含:"; for (int x : lst) { std::cout << ' ' << x; } std::cout << '\n'; }
Map 是一种关联容器,存储键值对。它支持基于键检索值。默认情况下,键按升序排序。
#include <iostream> #include <map>
int main() { std::map<std::string, int> m;
m["one"] = 1; m["two"] = 2;
std::cout << "Map 包含:\n"; for (const auto &pair : m) { std::cout << pair.first << ": " << pair.second << '\n'; } }
与 Map 类似,Unordered_map 也存储键值对,但它使用哈希表实现。这意味着与 Map 相比,Unordered_map 具有更好的平均性能,因为它不维护排序顺序。然而,最坏情况下的性能可能比 Map 更差。
#include <iostream> #include <unordered_map>
int main() { std::unordered_map<std::string, int> um;
um["one"] = 1; um["two"] = 2;
std::cout << "Unordered map 包含:\n"; for (const auto &pair : um) { std::cout << pair.first << ": " << pair.second << '\n'; } }
这些只是 C++ 容器的几个示例。还有其他容器类型,如 set、multiset、deque、stack、queue 和 priority_queue。每种容器都有其特定的用例和独特特性。了解这些容器及其使用时机可以大大提高您使用 C++ 的效率和效果。
用自己的话写下这一站的结论。