STL(standard template library)容器(二)

set/mulitiset 容器(续一)

count函数(返回当前查找数字的数量)

gg是multiset容器,返回100的数量可能是0,1以外的数字;s1是set容器,返回的100的数量只能是0或者1

cout << gg.count(100) << " " << s1.count(100) << endl;

find函数

查找100,若找到返回其迭代器,若未找到返回end()(set和multiset都可以用)

auto pos = gg.find(100);
for (auto it = pos; it != gg.end(); it++)
	cout << *it << " ";

clear函数

s.clear();

遍历set容器

for (auto g1 : gg) {//set和multiset两者方式都可以
	cout << g1 << " ";
}
cout << endl;

for (set<char>::iterator it = s.begin(); it != s.end(); it++) {
	cout << *it << " ";
}
cout << endl;

set按指定大小顺序排列

按照从大到小排列
...
class compare{
public:
    bool operator()(int v1,int v2)const
    {
        return v1>v2;
    }
}
...
int main(){
...
    set<int,compare> s;
...
}

map/multimap容器

使用前,要先包括#include<map>头文件,map是无序的

创建map/multimap容器(使用insert函数)

map<string, int> s;
s.insert(pair<string, int>("aa", 10));
s.insert(make_pair("bb", 20));
s.insert(map<string, int>::value_type("cc", 30));
s["dd"] = 9;

索引可以通过s[key]直接索引key对应的内容

cout << s["aa"] << " " << s["bb"] <<" "<<s["cc"] <<" "<< s["dd"] << endl;

swap函数

s.swap(s1);//交换s和s1中容器的值

遍历容器(无序)每次输出都不一样(first输出key,second输出内容)

方法一:
for (auto sss : s) {
	cout << sss.first <<" "<< sss.second << " ";
}
方法2:
for (map<string, int>::iterator it = s.begin(); it != s.end(); it++) {
	cout << (*it).first << " " << (*it).second << " ";
}
cout << endl;

erase函数(删除)

s.erase(s.begin(), s.end());//删除区间
s.erase(s.begin());//删除开头指针指向地址的内容
s.erase("hh");//通过关键字删除值

count函数(统计个数)

cout << s.count("ll")<< endl;//统计key"ll"出现的次数。

总结

deque(双端队列)和list(双端列表)可以双端插入push_front,push_back,vector只能一端插入push_back

queue(队列,先进先出)一端进,另一端出 和stack(栈,先进后出)同一端进出 push

set/multiset,map/multiset 无序,但会自动排序,set和map去重,multiset和multimap不去重 insert

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值