「学习笔记」set、map、auto
快 NOIP 了,最近的考试中用到了很多 STL其实也就今天的考试用到了,其中 set
与 map
以及简单的指针的使用也慢慢熟悉了
map#
对于 Hash 来说,这是个好东西,但是它也不能完全代替掉 Hash,因为它的操作是带 的,其次,它也会对元素进行排序
定义#
map<string, int> mp;
插入#
mp["IOI AK ME"] = 1;
这就是最常用的,此外他还有 erase()
、upper_bound()
、lower_bound()
、count()
、find()
、empty()
、size()
等函数,其中 find()
函数就是判断该元素是否出现过,empty()
判断是否为空,size()
返回容器大小,count(x)
返回元素个数
set#
set
是关联容器,内部通常采用红黑树实现,非常适合处理需要同时兼顾查找、插入与删除的情况。和数学中的集合相似,set
中不会出现值相同的元素。
操作#
insert(x)
: 当容器中没有等价元素的时候,将元素 插入到 set
中。
erase(x)
: 删除值为 的所有元素,返回删除元素的个数。
erase(pos)
: 删除迭代器为 的元素,要求迭代器必须合法。
erase(first,last)
: 删除迭代器在 范围内的所有元素。
clear()
: 清空 set
。
count(x)
: 返回 set
内键为 的元素数量。
find(x)
: 在 set
内存在键为 的元素时会返回该元素的迭代器,否则返回 end()
。
lower_bound(x)
: 返回指向首个不小于给定键的元素的迭代器。如果不存在这样的元素,返回 end()
。
upper_bound(x)
: 返回指向首个大于给定键的元素的迭代器。如果不存在这样的元素,返回 end()
。
empty()
: 返回容器是否为空。
size()
: 返回容器内元素个数。
auto#
这是一个便利的迭代器定义,但可惜只能在 C++ 14 及更新的版本中用,速度更慢,但可以充当各种各样的迭代器。
对于 pair
定义的元素(就拿 vector
为例),可以这样用:
vector<pair<int, int> > son
for (auto [it, i] : son) {
cout << it << endl;
}
作者:yifan0305
出处:https://www.cnblogs.com/yifan0305/p/16854513.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
转载时还请标明出处哟!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!