「学习笔记」set、map、auto

快 NOIP 了,最近的考试中用到了很多 STL其实也就今天的考试用到了,其中 setmap 以及简单的指针的使用也慢慢熟悉了

map#

对于 Hash 来说,这是个好东西,但是它也不能完全代替掉 Hash,因为它的操作是带 log 的,其次,它也会对元素进行排序

定义#

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): 当容器中没有等价元素的时候,将元素 x 插入到 set 中。
erase(x): 删除值为 x 的所有元素,返回删除元素的个数。
erase(pos): 删除迭代器为 pos 的元素,要求迭代器必须合法。
erase(first,last): 删除迭代器在 [firstlast) 范围内的所有元素。
clear(): 清空 set
count(x): 返回 set 内键为 x 的元素数量。
find(x): 在 set 内存在键为 x 的元素时会返回该元素的迭代器,否则返回 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 国际」许可协议进行许可。

转载时还请标明出处哟!

posted @   yi_fan0305  阅读(90)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示