记录一下平时用到的,并不全,做题如果用到其他的再补充
容器:
string: 头文件#include <string>
string obj;
char target;
obj.size()//返回目标长度 类型为string::size_type
obj.substr(0, 2)//复制obj从第0位开始长度为2的字符串,不改变obj本身,缺省默认从0开始,长度为obj长度
obj.push_back(target);//向obj尾部插入target字符
obj[n]//返回字符串n位置上的引用,前提字符串大小确定并且n在范围内
obj.empty();//字符串为空则为真
vector: 头文件#include <vector>
vector<int> obj;
int target;
obj.size();
obj.push_back(target);
obj[n]
obj.empty();
list : 头文件#include <list>
list<int> obj;
int target;
obj.push_back(target);
obj.sort();//排序 默认 < 可重载<来改变排序规则
//list没有自带find();
queue: 头文件#include <queue>
queue<int> obj;
obj.push();
obj.pop();
obj.front();//返回队头元素
obj.back();//返回队尾元素
obj.size();
//队列入队的元素并不是元素本身,如果想修改队列的元素从而修改本身需要入队指针
priority_queue: 头文件#include <queue>
priority_queue<int, vector<int>, greater<int> > obj;//优先队列相当于一个始终排序的队列吧,优先级设置默认从大到小,(头文件#include <functional>)greater<int>从小到大
obj.push();
obj.pop();
obj.top();//返回队头元素,top()是因为优先队列是一个二项堆结构
obj.size();
map: 头文件#include <map>
map<string, int> obj;//map类似hash不过查找插入速度都是O(logn)底层是红黑树实现
obj.insert(make_pair("one", 1));//插入数据key已经存在则不插入;
obj.find("one");//返回指定key的迭代器,若不存在则为obj.end();
obj["one"] = 1;//插入数据,key不存在则创建并插入,存在则覆盖
obj["one"]//返回key所对应的数据
multimap: 头文件#include <map>
multimap<string, int> obj;//实现1个key对应多个值
multimap<string, int>::iterator iter;
int counter;
obj.insert(make_pair("one", 1))//插入数据 key存在则增加数据
iter = obj.find("one");//返回指定key的迭代器,若不存在则为obj.end();
counter = obj.count("one");//返回key值所对应元素数量
while(counter--)//访问key值所有对应元素
{
cout << iter->second << endl;//输出对应的数据
counter--;
iter++;
}
//multimap不支持下标
set: 头文件#include <set>
set<int> obj;//基本等于没有对应数据的map,只能查询key的存在与否,不支持下标
obj.insert(target);
obj.find(target);
obj.size();
multiset: 头文件#include <set>
pair: 头文件#include <utility>
pair<int, string> obj(1, "one");//obj为pair类型,并初始化
obj.first;//返回第一个元素
obj.second;//返回第二个元素
obj = make_pair(2, "two");//生成新的pair对象
算法:头文件#include <algorithm>
sort(): 排序
reverse():翻转元素,在string类里经常用到
find(): 对容器查找元素