Associative Containers
set
通常使用自平衡二叉搜索树(例如红黑树)来实现
初始化
1 | set<int> val; // 定义空集合 |
方法
.begin()返回 vector 中第一个元素的 iterator.end()返回 vector 中最后一个元素后面的 iterator.size()返回 vector 大小.max_size()返回目前最多能装多少元素.empty()是否为空.insert(g)将元素 插入集合.erase(g)将元素 从集合中移除.find(g)返回元素 对应的 iterator.count(g)根据是否存在对应元素返回 或.lower_bound(g)找到第一个不小于 的元素的 iterator.upper_bound(g)找到第一个大于 的元素的 iterator
时间复杂度
插入、删除、查找:
创建或清除:
multiset
同样基于红黑树实现,和 set 基本相同,仅仅是允许有重复元素。
方法
基本与 set 相同
.erase(g)将所有元素 从集合中移除.erase(it)将 iteratorit指向的元素移除.count(g)返回元素 的数量.find(g)返回第一个元素 对应的 iterator.equal_range(g)返回一对 iterator,分别指向第一个等于 5 的元素和第一个大于 5 的元素。
map
插入数据方式
1 | map<int, std::string> mymap; |
特殊用法
如果创建的 map 为 map<template, int> 的形式,那么即使在 map 中没有插入 key-value pair,直接访问某个不存在的 key,可以正常返回,返回值为 。例如:
1 | map<int, int> tail_val_count; |
multimap
也就是 map 允许 key 相同的数据结构。
评论
