| unordered_map<char, int> mp; |
| for(const auto &mypair : mp) { |
| cout << mypair.first << " " << mypair.second << endl; |
| } |
| 或者 |
| for(const auto &[name, age] : mp) { |
| cout << name << ": " << age << endl; |
| } |
| unordered_map<char, int> mp; |
| for(unordered_map<char, int>::iterator it = mp.begin(); it != mp.end(); ++it) { |
| cout << "Key: " << it->first << ", Value: " << it->second << endl; |
| } |
count()
函数返回的是指定key的数量(注意不是返回value),也就是说,在unordered_map里只能返回0或1,而在multi_map里可以返回其它数值
find()
函数用于判断指定key是否存在,返回一个指向该元素的迭代器,如果未找到,则返回指向 map::end()
的迭代器
| vector<int> nums = {1, 2, 2}; |
| set<int> st(nums.begin(), nums.end()); |
| vector<int> v(st.begin(), st.end()); |
priority_queue
默认是最大堆(即优先级最高的元素在顶部):
priority_queue<int> pq; // 创建一个默认的最大堆
可以使用 std::greater
作为比较器来创建最小堆:
priority_queue<int, vector<int>, greater<int>> minHeap;
ps:vector<int>
是 priority_queue
的第二个模板参数,指定了底层容器的类型。 priority_queue
需要一个底层容器来存储元素,其他可能的选项还包括 deque
或 list
,但 vector
通常是最常用的选择,因为它在内存使用和随机访问性能上表现较好。
如果要创建的优先队列元素比较特殊,比如链表节点指针,就要自定义比较器了
| struct Comparator { |
| bool operator()(ListNode *a,ListNode *b) { |
| return a->val > b->val; |
| } |
| }; |
| |
| priority_queue<ListNode*, vector<ListNode* >, Comparator> queue; |
| pq.push(10); |
| pq.top(); |
| pq.pop(); |
| pq.empty(); |
| pq.size(); |
| string str = "bac"; |
| ranges::sort(str); |
| ranges::sort(str, greater()); |
| string str = "bac"; |
| sort(str.begin(), str.end()); //同上,如果是int,则按升序排列 |
| ranges::max(v); |
| ranges::sort(str); |