C++11中引入了哪些新的容器?请描述它们的特点和用法。
在C++11中,引入了几个新的容器,包括std::array
, std::forward_list
, 和基于哈希的无序容器(std::unordered_map
, std::unordered_set
, std::unordered_multimap
, 和 std::unordered_multiset
)。
std::array
:
- 特点:
std::array
是一个固定大小的数组容器,它封装了一个原生数组,提供了STL容器的接口,如迭代器、容量查询等。 -
用法:
“`cpp
std::array<int, 5> arr = {1, 2, 3, 4, 5};
for (int i : arr) {
std::cout << i << " ";
}
“`
std::forward_list
:
-
特点:
std::forward_list
是一个单向链表容器,它提供了高效的元素插入和删除操作。 -
用法:
“`cpp
std::forward_list<int> flist = {1, 2, 3};
flist.push_front(0); // 在链表前端插入元素
for (int i : flist) {
std::cout << i << " ";
}
“`
- 基于哈希的无序容器:
-
特点: 这些容器包括
std::unordered_map
,std::unordered_set
,std::unordered_multimap
, 和std::unordered_multiset
。它们基于哈希表实现,提供了平均常数时间复杂度的元素查找、插入和删除操作。 -
用法 (
std::unordered_map
为例):“`cpp
std::unordered_map<std::string, int> umap = {{"one", 1}, {"two", 2}};
umap["three"] = 3; // 插入新元素
for (const auto& pair : umap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
“`
总结:
C++11中引入的新容器增强了标准库的功能,提供了更多的数据结构选择。std::array
提供了固定大小的数组支持,std::forward_list
提供了单向链表的实现,而基于哈希的无序容器提供了高效的查找和操作性能。这些新容器使得C++标准库更加强大和灵活。