您的位置:首页 > 编程语言 > C语言/C++

C++STL学习笔记

2017-04-17 16:10 337 查看
记录一下平时用到的,并不全,做题如果用到其他的再补充

容器:

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在范围内
obj.empty();//字符串为空则为真


vector: 头文件#include <vector>

vector<int> obj;
int target;
obj.size();
obj.push_back(target);
obj

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(): 对容器查找元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: