目录
1. vector
2. string s;
3. queue,
4. stack(栈)
5. deque
6. set,map,multiset,multimap
7. unordered-set,unordered-map,unordered-multiset,unordered-multimap
8. bitset
vector--#include
变长数组,倍增思想
初始化:1. vector
2. vector
eg : vector
a.clear( );//清空(队列没有) a.front( )//返回a的第一个数 a.back( )//a的最后一个数
a.push_back( )//a后面中插入一个数 a.pop_back( );
a.begin( )/a.end( ) erase( )(O(n))
支持比较运算(按字典序来比)
pair
eg: p.first//第一个数 p.second//第二个数 支持比较运算
初始化p=make-pair(10,"yxc");p={20,"abc"}; 需要排序的放在first,
pair
字符串,substr(起始位置,字符串长度 ) , c-str( )//返回字符数组的起始地址
s.size( )=s.length( ) s.empty( ) s.clear( )
---push( )//向队尾插入一个元素 , front( ) //返回队头元素, pop( )//弹出队头元素,push( )//队尾插入一个
,back( )//弹出队头元素 size( ),empty( );
priority_queue(优先队列/堆)---(默认大根堆)
push( ) //插入一个元素 top( ) //返回堆顶元素 pop( )//弹出堆顶元素
//小根堆:第1种. priority-queue
第二种:priority-queue
---push( ) , top( ) , pop( ),size( ),empty( )
(双端队列,队头队尾都可以插入删除且支持随机访问,相当于加强版的vector)
size( ),empty( ),clear( ),
front( ),//返回第一个元素 back( ), //返回最后一个元素 push-back( )//末尾插入一个元素
pop-back( ),//返回最后一个元素 push-front( )//队首插入一个元素 pop-front( )//弹出队头元素
begin( )/end( )
(基于平衡二叉树(红黑树))本质:动态维护有序序列 #include
set
multiset
set/multiset---insert( )//插入,find( )//查找,count( )//返回某个数的个数,
erase( );//1.输入是一个数x,删除所有x, O(k+logn)(k是x的个数)
2.输入是一个迭代器,删除这个迭代器
lower-bound( )//返回大于等于x的最小的数的迭代器O(logn)
upper-bound( )//返回大于x的最小的数的迭代器O(logn)
map/multimap:
insert( ) 插入的数是一个pair
erase( ) 输入的参数是pair或者迭代器
find( )
[] O(logn)
eg: map
a["yxc"]=1;
cout< lower-bound( )//返回大于等于x的最小的数的迭代器O(logn)
upper-bound( )//返回大于x的最小的数的迭代器O(logn)
(hash表)
和上面类似,增删改查O(1)
不支持lower-bound( )/upper-bound( ),迭代器的++,--(和排序有关的都不支持)
(位存储/状态压缩)--压位//可以省8位空间
bitset<10000>s; //定义
~ , & , | , ^
>> ,<<
==,!=
[ ]
count( )//返回有多少个1
any( )//判断是否至少有一个1
none( )//判断是否全为0
set( )//把所有位置为1
set(k,v)//第k位变为v
reset( )//把所有位变成0
flip( )//所有位取反==等价于~
flip(k)//把第k位取反
***************************************************************************************