C++STL学习笔记

记录一下平时用到的,并不全,做题如果用到其他的再补充

容器:

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(): 对容器查找元素


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值