C++11中引入了哪些新的容器?请描述它们的特点和用法。

在C++11中,引入了几个新的容器,包括std::array, std::forward_list, 和基于哈希的无序容器(std::unordered_map, std::unordered_set, std::unordered_multimap, 和 std::unordered_multiset)。

  1. std::array:
  • 特点: std::array 是一个固定大小的数组容器,它封装了一个原生数组,提供了STL容器的接口,如迭代器、容量查询等。

  • 用法:

    “`cpp
    std::array<int, 5> arr = {1, 2, 3, 4, 5};
    for (int i : arr) {
    std::cout << i << " ";
    }
    “`

  1. 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 << " ";
    }
    “`

  1. 基于哈希的无序容器:
  • 特点: 这些容器包括 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++标准库更加强大和灵活。

发表评论

后才能评论