C++STL学习笔记
2017-04-17 16:10
337 查看
记录一下平时用到的,并不全,做题如果用到其他的再补充
容器:
string: 头文件#include <string>
vector: 头文件#include <vector>
list : 头文件#include <list>
queue: 头文件#include <queue>
priority_queue: 头文件#include <queue>
map: 头文件#include <map>
multimap:
头文件#include <map>
set:
头文件#include <set>
multiset: 头文件#include <set>
pair: 头文件#include <utility>
算法:头文件#include <algorithm>
sort(): 排序
reverse():翻转元素,在string类里经常用到
find(): 对容器查找元素
容器:
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(): 对容器查找元素
相关文章推荐
- C++ STL学习笔记八 multiset多重集合容器
- 【C++ 学习笔记】:STL-multimap
- C++之Effective STL学习笔记Item7
- C++ STL学习笔记4--list
- STL学习笔记----C++的新语言特性
- C++ Standard Stl -- SGI STL源码学习笔记(04) stl_deque && 初涉STL内存管理
- C++ STL 学习笔记
- C++ Standard Stl -- SGI STL源码学习笔记(07) stl_vector 与 一些问题的细化 3 resize函数剖析
- C++之Effective STL学习笔记Item21
- C++ STL学习笔记三 deque双端队列容器
- C++ Standard Stl -- SGI STL源码学习笔记(02) Concepts Check
- 【C++ 学习笔记】:STL-multimap
- C++ Standard Stl -- SGI STL源码学习笔记(05) stl_vector 与 一些问题的细化 1
- C++精华(STL)学习笔记之算法
- C++ STL 学习笔记
- C++精华(STL)学习笔记之算法
- C++ Standard Stl -- SGI STL源码学习笔记(01) auto_ptr
- C++ STL 学习笔记
- C++ STL学习笔记2--String
- C++ Standard Stl -- SGI STL源码学习笔记(06) stl_vector 与 一些问题的细化 2 push_back函数剖析