set/map学习

做滑动窗口的题目时,发现对map和set的使用不够熟练,因此复习一下。

set

写在前面

(1)set的特性是,所有元素都会根据键值自动排序。由于set不像map既有实值(value)又有键值(key),因此set的键值就是实值。
(2)不能通过迭代器来修改set的键值,因为改变其键值会破坏set的组织,所以set<t>::iterator被定义为const_iterator,杜绝写入操作</t>

底层实现

map和set都是关联式容器,多以RB-tree为底层机制。

常用简单操作

迭代器:begin(), end(), rbegin(), rend();
判断大小:empty(), size(), max_size();

插入

set<int> Set;
int x = 5;
Set.insert(x);

查找

int cnt = Set.count(x);
auto ite1 = Set.find(x);
if(ite1!=Set.end())
    cout << "x found" << endl;

删除

Set.erase(x);
Set.clear();

map

写在前面

(1)map所有元素都是pair,同时拥有实值和键值;pair第一个值为键值,第二个值为实值;
(2)map不允许又两个元素拥有相同的键值;
(3)通过迭代器可以修改实值,无法修改键值

常用简单操作

迭代器:begin(), end(), rbegin(), rend();
判断大小:empty(), size(), max_size();

插入

map<string, int> Map;
string s = "Hello";
/* 插入pair数据 */
Map.insert( pair<string, int>("Hello",1) );
/* 插入valueType数据 */
Map.insert( map<string, int>("Hello", 1) );

查找

int cnt = Set.count(x);
auto ite1 = Set.find(x);
if(ite1!=Set.end())
    cout << "x found" << endl;

删除

Set.erase(x);
Set.clear();
全部评论

相关推荐

不想上班的肱二头肌很...:简历一页,项目突出重点,自我评价可以删掉的
点赞 评论 收藏
分享
在看牛客的社畜很积极:身高体重那一行信息去掉,学校那一行的信息放上面,找半天都没找到你是哪个学校什么专业的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务