map与set

vector

VECTOR

set

https://blog.csdn.net/qq_56067257/article/details/123252972


insert(key_value); 将key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。)

s.erase(迭代器/值);
s.clear();
set<int>::iterator i;
for(int i=q.begin();i!=q.end();i++)cout<<*i;
set<string>::iterator it_low = st.lower_bound(值);//第一个大于等于va的数
set<string>::iterator it_up = st.upper_bound(值);//第一个大于va的数
升降序建议自写重载运算符(set正着写(与排序一样)!!!!!)
如果set开的结构体,指针为it,那么他的值为it->first,it->second
如果set删除一个指针的话,他就不能用了

multiset

与set一样,不过是可重复集合,一次只删一个元素。

mulitseterase每次删除全部元素。
如果你只想删一个元素的话。可以先找到他的位置,然后删了这个迭代器。

bitset

bitset<1000>p;
相当于开了一个1000位的二进制数,可以进行位运算基本操作
s.count() 返回二进制串中有多少个1;
若s所有位都为0,则s.any()返回false,s.none()返回true;
若s至少有一位为1,则s.any()返回true,s.none()返回false;


s.set()把s所有位变为1;
s.set(k,v)把s的第k位改为v,即s[k]=v;
s.reset()把s的所有位变为0.
s.reset(k)把s的第k位改为0,即s[k]=0;
s.flip()把s所有位取反.即s=~s;
s.flip(k)把s的第k位取反,即s[k]^=1

map

map用法比较简单。
重载运算符怎么理解?
struct node{
	int a[34];
	bool operator<(const node A)const{
		for(int j=0;j<m;j++)
			if(a[j]!=A.a[j])return a[j]<A.a[j];
		return 0; 
	}
};
map<node,int>mp;
如上,如果两个数定义为相同,应return 0,这样前后都return 0map才能判断相等。
posted @   FJOI  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示