string
string类可以直接用来比较大小
str.size(),length() 字符串的长度
str.insert(pos,string) 在pos号位置插入字符串string
str.erase() 有两种用法:删除单个元素、删除一个区间内的所有元素,时间复杂度均为O(N)
str.erase(pos,length),其中pos为需要开始删除的起始位置,length为删除的字符个数
str.substr(pos,len),返回从pos号位置开始、长度为len的子串,时间复杂度为O(len)
str.find(str2),当str2是str的子串时,返回其在str中第一次出现的位置;如果str2不是str的子串,那么返回string::npos
str.replace(pos,len,str2),把str从pos号位置开始,长度为len的子串替换为str2
vector
v.size() 表长度
v.begin() 返回第一个元素的迭代器
v.end() 返回最后一个元素的迭代器
v.empty() 判断是否为空
v.push_back() 在尾部插入元素;
v.pop_back() 弹出尾部元素
v.front() 返回第一个元素
v.back() 返回最后一个元素
v.insert() 插入一个或多个元素
v1.swap(v2) 交换两个容器的所有元素
deque(双端队列)
empty(); //判断容器是否为空
size(); //返回容器中的元素的个数
push_back(x); //在容器尾部添加数据
push_front(x); //在容器头部插入一个数据
pop_back(); //删除容器最后一个数据
pop_front(); //删除容器第一个数据
front(); //返回容器中第一个元素
back(); //返回容器中最后一个元素
resize(num,x); //重新指定容器的长度为num,若容器变长,则以x值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。
sort(deque.begin(),deque.end()) //将deque容器排序
list
头文件:#include<list>
list<int> l; //创建一个int型链表
empty();//判断是否为空
size(); //获取链表大小
push_front() //在容器头部插入数据
push_back() //在容器尾部插入数据
pop_front() //删除容器头部元素
pop_back() //删除容器尾部元素
erase(l1.begin()); //删除第一个元素
erase(l1.begin(),l1.begin()+4); //删除前4个元素
insert(li.begin(),x); //在链表最前端插入数据x
insert(li.begin(),n,x); //在链表最前端插入n个数据内容为x
l.sort(); //对链表l进行升序排序
stack
#include <stack>
size() //栈的大小
empty() //是否为空
push(x) //在栈头插入元素x
pop() //移除栈顶元素
top() //获取栈顶元素
queue
#include<queue>
size(); //队列中元素个数
empty(); //判断是否为空
push(); //在队列尾部添加元素
pop(); //移除队列的第一个元素
front(); //返回队列的第一个元素
back(); //返回队列的最后一个元素
priority-queue
priority_queue 即优先级队列,是一种容器适配器,最大元素放在第一个。
底层用堆实现,默认是大堆,因为默认大的优先级高,可随时插入元素,可快速查找最大元素,即优先级队列中第一个元素。
empty( )://检测容器是否为空
size( )://返回容器中有效元素个数
push_back( )://在容器尾部插入元素
pop_back( )://删除容器尾部元素
top(); //返回队列头部元素 优先队列只能通过top()访问队首元素(优先级最高的元素)
没有clear
set
一个内部自动有序而且不重复元素的容器。
set只能通过迭代器iterator访问;
for (auto it = s1.begin(); it != s1.end(); ++it)
{
cout << *it << " ";
}
insert(x)://将x插入set容器中,并且自动递增排序和去重。时间复杂度为O(logN)
erase(x)://删除单个元素,时间复杂度为O(logN)
clear()://用来清空set所有元素,时间复杂度为O(N)
find(value):查找值为value的元素,返回它的迭代器
size(); //容器大小
count(val); //val在集合出现的次数
empty(); //判断是否为空
s1.swap(s2);//容器s1,s2互相交换
multiset——排序但是不去重
map
begin();//返回指向容器中第一个(注意,是已排好序的第一个)键值对的双向迭代器
end();//返回指向容器的最后一个元素(注意,是已排好序的最后一个)所在位置后一个位置的双向迭代器
find(key);//在map容器中查找键为key的键值对,如果成功找到,则返回指向该键值对的双向迭代器
lower_bound(key);//返回一个指向当前map容器中第一个大于或等于key的键值对的双向迭代器
upper_bound(key); //返回一个指向当前map容器中第一个大于key的键值对的迭代器
empty(); //判断是否为空
insert();//向map容器中插入键值对
erase();//删除map容器指定位置、指定键(key)值或者指定区域内的键值对
swap();//交换2个map容器中存储的键值对,这意味着,操作的2个键值对的类型必须相同
count(key); //在当前map容器中,查找键为key的键值对的个数并返回
multimap
与map的不同之处:
1:每个键对应的值不能够修改。
2:multimap容器中可以同时存储多个键相同的键值对。