Homework Introduction
vector
-
序列式容器(按顺序存储,元素可重复)
-
随机访问快 , 尾部插入/删除快 , 中间插入/删除慢
-
核心函数
-
#include <vector> std::vector<int> vec = {1, 2, 3}; vec.push_back(4); // 尾部添加 vec.pop_back(); // 尾部删除 vec.size(); // 元素个数 vec.empty(); // 是否为空 vec[0]; // 随机访问(无越界检查) vec.at(0); // 随机访问(有越界检查,抛异常) vec.insert(vec.begin()+1, 5); // 插入到指定位置 vec.erase(vec.begin()+1); // 删除指定位置元素 vec.clear(); // 清空
-
set
-
有序唯一集合
-
元素自动排序(默认升序) , 无重复元素,查找/插入/删除 , 不支持随机访问
-
适用于有序且唯一的结合(去重+排序)
-
核心函数
-
#include <set> std::set<int> s = {3, 1, 2}; // 自动排序为 {1,2,3} s.insert(4); // 插入 s.erase(2); // 删除指定值 auto it = s.find(3); // 查找(返回迭代器,未找到则为 s.end()) if (it != s.end()) { /* 找到 */ } s.count(1); // 统计元素个数(0或1)
-
unordered_set
- 无序唯一集合
- 基于哈希表,元素无序,查找/插入/删除 平均 , 最坏 ,元素唯一
- 常用场景:快速查找/去重(无需排序,比 set 高效)
multiset
- 有序可重复集合
- 与 类似,但允许重复元素,
cout()可返回大于 的值 - 适用于有序且可重复的集合(如统计元素出现次数)
map
-
键值对,键唯一且有序
-
键值对(key - value) , 键自动排序(默认升序),键唯一,查找/插入/删除
-
适用于需要键值且键有序的场景(如字典、配置表)
-
核心函数
-
#include <map> std::map<int, std::string> mp = {{1, "a"}, {2, "b"}}; mp[3] = "c"; // 插入/修改键值对 mp.insert({4, "d"}); // 插入(键存在则不修改) mp.erase(2); // 删除指定键 auto it = mp.find(1); // 查找键 if (it != mp.end()) { std::cout << it->second << std::endl; // 输出 "a" } mp.count(1); // 统计键的个数(0或1)
-
unordered_map
- 无序键值对,键唯一
- 基于哈希表,键值对无需,查找/插入/删除平均 , 比
map更高效(无需排序) - 适用于高频键值查找(如缓存,哈希表)
priority_queue
-
优先队列,默认大顶堆(最大值优先)
-
核心函数
-
#include <queue> std::priority_queue<int> pq; // 大顶堆 pq.push(3); pq.push(1); pq.push(2); // 堆顶为3 pq.top(); // 访问堆顶(3) pq.pop(); // 弹出堆顶(3) // 小顶堆写法 std::priority_queue<int, std::vector<int>, std::greater<int>> pq_min;
-
sort
-
排序(默认升序,可自定义比较函数)
-
核心函数
-
std::sort(vec.begin(), vec.end()); // 升序 std::sort(vec.begin(), vec.end(), std::greater<int>()); // 降序 bool cmp(int a,int b){ return abs(a) < abs(b); } // 自定义排序(按绝对值) std::sort(vec.begin(), vec.end(), cmp);
-
reverse
-
反转容器
-
std::reverse(vec.begin(), vec.end());
unique
-
去重(需先排序,仅删除相邻重复元素)
-
std::sort(vec.begin(), vec.end()); auto last = std::unique(vec.begin(), vec.end()); vec.erase(last, vec.end()); // 真正删除重复元素
Problem
Please claim the assignment to see the problems.
- Status
- Live...
- Problem
- 19
- Open Since
- 2025-12-5 0:00
- Deadline
- 2025-12-31 23:59
- Extension
- 24 hour(s)