-
vector
:适用于需要按顺序存储元素,并且需要随机访问元素的场景。例如,动态数组的需求、需要频繁在尾部进行插入和删除操作的场景等。#include <iostream> #include <vector> int main() { std::vector<int> nums = {1, 2, 3, 4, 5}; // 随机访问元素 std::cout << "第三个元素:" << nums[2] << std::endl; return 0; }
-
unordered_map
:适用于需要按键值对存储数据,并且对于查找操作的性能要求较高的场景。由于其底层基于哈希表,因此适合用于大量数据的快速查找。#include <iostream> #include <unordered_map> int main() { std::unordered_map<std::string, int> scores = { {"Alice", 85}, {"Bob", 90}, {"Charlie", 78} }; // 查找某个学生的分数 std::string name = "Bob"; if (scores.find(name) != scores.end()) { std::cout << name << " 的分数是:" << scores[name] << std::endl; } else { std::cout << "找不到学生:" << name << std::endl; } return 0; }
-
set
和unordered_set
:set
是有序的关联容器,存储一组唯一的元素,并且元素是按照升序排序的;unordered_set
是无序的关联容器,存储一组唯一的元素,但不保证元素的顺序。适用于需要存储一组唯一元素,并且需要快速查找元素的场景。#include <iostream> #include <set> int main() { std::set<int> nums = {3, 1, 4, 1, 5, 9, 2, 6}; // 判断某个整数是否存在 int target = 5; if (nums.find(target) != nums.end()) { std::cout << target << " 存在于集合中" << std::endl; } else { std::cout << target << " 不存在于集合中" << std::endl; } return 0; }
-
list
:适用于需要频繁在中间进行插入和删除操作的场景,因为list
的插入和删除操作效率较高,但访问元素的效率较低。#include <iostream> #include <list> int main() { std::list<std::string> words = {"apple", "banana", "cherry"}; // 在第二个位置插入一个单词 auto it = std::next(words.begin()); words.insert(it, "orange"); // 删除第一个单词 words.pop_front(); // 输出所有单词 for (const auto& word : words) { std::cout << word << std::endl; } return 0; }
-
deque
:适用于需要在两端进行高效插入和删除操作的场景,因为deque
支持在两端进行快速插入和删除操作,但不支持像vector
那样的随机访问。#include <iostream> #include <deque> int main() { std::deque<int> nums = {2, 3, 4}; // 在前端插入一个数 nums.push_front(1); // 在后端删除一个数 nums.pop_back(); // 输出所有数 for (const auto& num : nums) { std::cout << num << std::endl; } return 0; }
C++中常见的容器
最新推荐文章于 2024-05-27 00:34:23 发布