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一样,不过是可重复集合,一次只删一个元素。
mulitset
的erase
每次删除全部元素。
如果你只想删一个元素的话。可以先找到他的位置,然后删了这个迭代器。
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 0,map才能判断相等。
标签:map,set,iterator,value,bool,key
From: https://www.cnblogs.com/FJOI/p/17232931.html