当前位置:   article > 正文

C++中常见容器总结Array-Vector-List-Queue-Stack-Map-Set

C++中常见容器总结Array-Vector-List-Queue-Stack-Map-Set

在 C++ 中,有许多常见的容器,每种都有其特定的用途和性能特征。以下是一些常见的容器类型
1. 数组(Array):是一组连续存储的相同类型元素的集合。数组的大小在创建时就确定,并且不能动态改变
2. 向量(Vector):是一种动态数组,大小可以在运行时动态增长。`std::vector` 提供了对数组的动态访问和管理。
3. 列表(List):双向链表的一种实现,允许在任意位置高效地插入和删除元素。与向量不同,列表中的元素在内存中不是连续存储的。
4. 队列(Queue):是一种先进先出(FIFO)的数据结构,元素的插入和删除操作都发生在队列的两端。`std::queue` 是一个基于其他容器(通常是双端队列)实现的队列。
5. 栈(Stack):是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。`std::stack` 是一个基于其他容器(通常是 deque)实现的栈。
6. 集合(Set):是一种无序的容器,其中的元素唯一且不重复。`std::set` 提供了对集合的操作,如插入、查找和删除等。
7. 映射(Map):是一种关联容器,存储键值对(key-value pairs)。每个键都是唯一的,而且按照某种规则进行排序。`std::map` 提供了对映射的操作,如插入、查找和删除等。
8. 哈希表(Hash Table):是一种根据键直接访问值的数据结构,通过哈希函数将键映射到存储桶中。`std::unordered_map` 和 `std::unordered_set` 是基于哈希表实现的关联容器。
这些是 C++ 中的一些常见容器类型,你可以根据具体的需求选择合适的容器来存储和操作数据。

每种容器类型举例说明其用法:

  • 数组(Array)
  1. #include <iostream>
  2. int main() {
  3. int arr[5] = {1, 2, 3, 4, 5}; // 创建一个包含5个元素的整数数组
  4. std::cout << "Array elements:";
  5. for (int i = 0; i < 5; ++i) {
  6. std::cout << " " << arr[i];
  7. }
  8. std::cout << std::endl;
  9. return 0;
  10. }

  • 向量(Vector)
  1. #include <iostream>
  2. #include <vector>
  3. int main() {
  4. std::vector<int> vec = {1, 2, 3, 4, 5}; // 创建一个包含5个整数的向量
  5. std::cout << "Vector elements:";
  6. for (int i = 0; i < vec.size(); ++i) {
  7. std::cout << " " << vec[i];
  8. }
  9. std::cout << std::endl;
  10. return 0;
  11. }

  • 列表(List)
  1. #include <iostream>
  2. #include <list>
  3. int main() {
  4. std::list<int> myList = {1, 2, 3, 4, 5}; // 创建一个包含5个整数的列表
  5. std::cout << "List elements:";
  6. for (const auto& elem : myList) {
  7. std::cout << " " << elem;
  8. }
  9. std::cout << std::endl;
  10. return 0;
  11. }

  • 队列(Queue)
  1. #include <iostream>
  2. #include <queue>
  3. int main() {
  4. std::queue<int> myQueue;
  5. myQueue.push(1);
  6. myQueue.push(2);
  7. myQueue.push(3);
  8. std::cout << "Queue elements:";
  9. while (!myQueue.empty()) {
  10. std::cout << " " << myQueue.front();
  11. myQueue.pop();
  12. }
  13. std::cout << std::endl;
  14. return 0;
  15. }

  • 栈(Stack)
  1. #include <iostream>
  2. #include <stack>
  3. int main() {
  4. std::stack<int> myStack;
  5. myStack.push(1);
  6. myStack.push(2);
  7. myStack.push(3);
  8. std::cout << "Stack elements:";
  9. while (!myStack.empty()) {
  10. std::cout << " " << myStack.top();
  11. myStack.pop();
  12. }
  13. std::cout << std::endl;
  14. return 0;
  15. }

  • 集合(Set)
  1. #include <iostream>
  2. #include <set>
  3. int main() {
  4. std::set<int> mySet = {3, 1, 4, 1, 5}; // 创建一个包含5个整数的集合
  5. std::cout << "Set elements:";
  6. for (const auto& elem : mySet) {
  7. std::cout << " " << elem;
  8. }
  9. std::cout << std::endl;
  10. return 0;
  11. }

  • 映射(Map)
  1. #include <iostream>
  2. #include <map>
  3. int main() {
  4. std::map<std::string, int> myMap = {{"a", 1}, {"b", 2}, {"c", 3}}; // 创建一个包含3个键值对的映射
  5. std::cout << "Map elements:";
  6. for (const auto& pair : myMap) {
  7. std::cout << " (" << pair.first << ", " << pair.second << ")";
  8. }
  9. std::cout << std::endl;
  10. return 0;
  11. }

  • 哈希表(Hash Table)
  1. #include <iostream>
  2. #include <unordered_map>
  3. int main() {
  4. std::unordered_map<std::string, int> myHashMap = {{"a", 1}, {"b", 2}, {"c", 3}}; // 创建一个包含3个键值对的哈希表
  5. std::cout << "Hash Map elements:";
  6. for (const auto& pair : myHashMap) {
  7. std::cout << " (" << pair.first << ", " << pair.second << ")";
  8. }
  9. std::cout << std::endl;
  10. return 0;
  11. }

--

在 C++ 标准库中,迭代器(iterator)是一种用于访问容器中元素的抽象概念。迭代器类似于指针,它指向容器中的某个元素,可以通过迭代器对该元素进行访问和修改。

迭代器类型是由容器类定义的一个类型,用于表示迭代器。每种容器类都有自己的迭代器类型,例如:

  • vector<int>::iterator 表示 vector<int> 容器中元素的迭代器类型。
  • list<string>::iterator 表示 list<string> 容器中元素的迭代器类型。
  • map<int, string>::iterator 表示 map<int, string> 容器中元素的迭代器类型。

迭代器类型是容器类与算法类之间的接口,使得算法可以在不同类型的容器上工作。例如,可以使用 std::sort 算法对 vector<int> 容器进行排序,也可以使用 std::sort 算法对 list<string> 容器进行排序,因为这两种容器都支持随机访问迭代器。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/525126
推荐阅读
相关标签
  

闽ICP备14008679号