STL常用容器及其常用函数总结(避免记混了SB)
2014-06-13 22:19
253 查看
1、vector
初始化:vector<int> v;
vector<int> v(v1);//v1是一个vector<int>
vector<int> v(it1,it2);//it1,it2是两个vector<int>::iterator
vector<int> v(10,0);//初始化为10个0
vector<int> v(10);//初始化为10个随机值
检查容器是否为空:v.empty()
获取容器中元素长度:v.size();
另附几个不常使用:v.max_size()//容器中可容纳最多元素个数 c.resize(n)//调整容器长度大小为n c.resize(n,t)//同上所有元素设为t
添加元素:v.push_back(10);//在尾添加元素10
v.insert(it,10);//在迭代器it所指向元素前面插入元素10
v.insert(it,10,1);//在迭代器it所指向元素前面插入10个元素0
v.insert(it,it1,it2);//在迭代器it所指向元素前面插入迭代器[it1,it2)范围内元素
访问元素:v[10] v.at(10) c.back() c.front 上述返回的都是引用,因此可以用于改变该位置的元素值
删除元素:v.erase(it);//删除迭代器it所指向元素
v.erase(it1,it2);//删除迭代器[it1,it2)范围内元素
v.clear();//删除所有元素
c.pop_back;//删除最后一个元素
查找某一元素:find(it1,it2,10);//查找[it1,it2)范围内是否存在元素值为10,存在则返回指向该元素迭代器
swap函数:v.swap(v1);//将容器v与v1中内容交换,速度快于将内容复制
assign函数:v.assign(it1,it2);//将v中元素替换为[it1,it2)范围内元素,it1,it2不能指向v中元素,与swap相比需要将[it1,it2)内容复制到v中
v.assign(10,0);//将v中元素替换为10个0
2、list
初始化:同vector: list<int> l; list<int> l(l1); list<int> l(it1,it2); list<int> l(10,0); list<int> l(10);
容器是否为空:l.empty();
容器大小:l.size(); l.max_size(); l.resize(10); l.resize(10,0);
添加元素:l.push_back(10);//同
l.push_front(10);//在头添加元素10
l.insert(it,10);//
l.insert(it,it1,it2);//
l.insert(it,10,0);//
访问元素:l.back(); l.front();//无[]和at,性质决定
删除元素:l.erase(it);
l.erase(it1,it2);
l.clear();//
l.pop_back();//
l.pop_front();//和deque有
查找某一元素:find(it1,it2,0);//返回迭代器
swap函数及assign函数同上,使用
l.swap(l1); l.assign(it1,it2); l.assign(10,0);
3、stack(无迭代器)
初始化:stack<int> stk; stack<int> stk(stk1);
添加元素:stk.push(10);//入栈
删除元素:stk.pop();//出栈
访问元素:stk.top();//获得栈顶元素
stk.empty(); stk.size();
stk.swap(stk1);
3、queue(无迭代器)
queue<int> que; queue<int> que(que1);
que.push(10);//入队 que.pop();//出对
que.front();//头 que.back();//尾
que.empty();//判空 que.size();//长度
que.swap(que1);//
4、string
初始化:string s;
string s(s1);
string s("123");
string s("1234",3);//前3个元素用于初始化
string s(s1,3);//s1的[0,3)作为s初始化
string s(s1,1,2);//s1的从位置1开始长度为2的内容用于初始化s
string s(sit1,sit2);//迭代器初始化
修改string对象方法:
insert,erase,assign
访问某一位置元素:s[1]; s.at[1]; 返回引用
截取子串:s.sustr(1,5);//位置1开始长度为5 s.substr(1);//返回位置1开始子串
append函数:s.append(args)
replace函数:s.replace(1,5,args); s.replace(it1,it2,args);
args可为多种类型参数,表示一段范围字符串内容即可:下标位置,迭代器等
查找函数:s.find(args) s.rfind(args);
s.find_first_of(args); s.find_last_of(args);
s.find_first_not_of(args); s.find_last_not_of(args);
比较函数:compare
string的各个函数参数比较多样化,主要是可以通过下标,迭代器,字符串表示一段目标与之匹配
4、map
初始化:map<int,int> mp;
map<int,int> mp(mp1);
map<int,int> mp(it1,it2);
内部类型定义:map<K,V>::key_type键值类型
map<K,V>::mapped_type键值关联值类型
map<K,V>::value_type是个pair类型
假定一个map迭代器it,it指向类型为value_type,it->first指向类型key_type,it->second指向类型为mapped_type
插入元素:mp.insert(make_pair(10,10));
mp.insert(it1,it2);
insert返回类型为pair<map<int,int>::iterator,bool>若插入成功,则second为true;若该键值已存在则插入失败,返回second为false
访问元素:mp[10];//10是键值
count函数:mp.count(10);//返回键值为10的元素个数,因此只为0或1
find函数:mp.find(10);//返回键值为10的元素的迭代器
erase函数:mp.erase(10)//删除键值为10的元素
mp.erase(it);//删除迭代器it所指向元素
mp.erase(it1,it2);//删除迭代器[it1,it2)范围内数据
5、set
支持insert,count,find,erase等函数
初始化:vector<int> v;
vector<int> v(v1);//v1是一个vector<int>
vector<int> v(it1,it2);//it1,it2是两个vector<int>::iterator
vector<int> v(10,0);//初始化为10个0
vector<int> v(10);//初始化为10个随机值
检查容器是否为空:v.empty()
获取容器中元素长度:v.size();
另附几个不常使用:v.max_size()//容器中可容纳最多元素个数 c.resize(n)//调整容器长度大小为n c.resize(n,t)//同上所有元素设为t
添加元素:v.push_back(10);//在尾添加元素10
v.insert(it,10);//在迭代器it所指向元素前面插入元素10
v.insert(it,10,1);//在迭代器it所指向元素前面插入10个元素0
v.insert(it,it1,it2);//在迭代器it所指向元素前面插入迭代器[it1,it2)范围内元素
访问元素:v[10] v.at(10) c.back() c.front 上述返回的都是引用,因此可以用于改变该位置的元素值
删除元素:v.erase(it);//删除迭代器it所指向元素
v.erase(it1,it2);//删除迭代器[it1,it2)范围内元素
v.clear();//删除所有元素
c.pop_back;//删除最后一个元素
查找某一元素:find(it1,it2,10);//查找[it1,it2)范围内是否存在元素值为10,存在则返回指向该元素迭代器
swap函数:v.swap(v1);//将容器v与v1中内容交换,速度快于将内容复制
assign函数:v.assign(it1,it2);//将v中元素替换为[it1,it2)范围内元素,it1,it2不能指向v中元素,与swap相比需要将[it1,it2)内容复制到v中
v.assign(10,0);//将v中元素替换为10个0
2、list
初始化:同vector: list<int> l; list<int> l(l1); list<int> l(it1,it2); list<int> l(10,0); list<int> l(10);
容器是否为空:l.empty();
容器大小:l.size(); l.max_size(); l.resize(10); l.resize(10,0);
添加元素:l.push_back(10);//同
l.push_front(10);//在头添加元素10
l.insert(it,10);//
l.insert(it,it1,it2);//
l.insert(it,10,0);//
访问元素:l.back(); l.front();//无[]和at,性质决定
删除元素:l.erase(it);
l.erase(it1,it2);
l.clear();//
l.pop_back();//
l.pop_front();//和deque有
查找某一元素:find(it1,it2,0);//返回迭代器
swap函数及assign函数同上,使用
l.swap(l1); l.assign(it1,it2); l.assign(10,0);
3、stack(无迭代器)
初始化:stack<int> stk; stack<int> stk(stk1);
添加元素:stk.push(10);//入栈
删除元素:stk.pop();//出栈
访问元素:stk.top();//获得栈顶元素
stk.empty(); stk.size();
stk.swap(stk1);
3、queue(无迭代器)
queue<int> que; queue<int> que(que1);
que.push(10);//入队 que.pop();//出对
que.front();//头 que.back();//尾
que.empty();//判空 que.size();//长度
que.swap(que1);//
4、string
初始化:string s;
string s(s1);
string s("123");
string s("1234",3);//前3个元素用于初始化
string s(s1,3);//s1的[0,3)作为s初始化
string s(s1,1,2);//s1的从位置1开始长度为2的内容用于初始化s
string s(sit1,sit2);//迭代器初始化
修改string对象方法:
insert,erase,assign
访问某一位置元素:s[1]; s.at[1]; 返回引用
截取子串:s.sustr(1,5);//位置1开始长度为5 s.substr(1);//返回位置1开始子串
append函数:s.append(args)
replace函数:s.replace(1,5,args); s.replace(it1,it2,args);
args可为多种类型参数,表示一段范围字符串内容即可:下标位置,迭代器等
查找函数:s.find(args) s.rfind(args);
s.find_first_of(args); s.find_last_of(args);
s.find_first_not_of(args); s.find_last_not_of(args);
比较函数:compare
string的各个函数参数比较多样化,主要是可以通过下标,迭代器,字符串表示一段目标与之匹配
4、map
初始化:map<int,int> mp;
map<int,int> mp(mp1);
map<int,int> mp(it1,it2);
内部类型定义:map<K,V>::key_type键值类型
map<K,V>::mapped_type键值关联值类型
map<K,V>::value_type是个pair类型
假定一个map迭代器it,it指向类型为value_type,it->first指向类型key_type,it->second指向类型为mapped_type
插入元素:mp.insert(make_pair(10,10));
mp.insert(it1,it2);
insert返回类型为pair<map<int,int>::iterator,bool>若插入成功,则second为true;若该键值已存在则插入失败,返回second为false
访问元素:mp[10];//10是键值
count函数:mp.count(10);//返回键值为10的元素个数,因此只为0或1
find函数:mp.find(10);//返回键值为10的元素的迭代器
erase函数:mp.erase(10)//删除键值为10的元素
mp.erase(it);//删除迭代器it所指向元素
mp.erase(it1,it2);//删除迭代器[it1,it2)范围内数据
5、set
支持insert,count,find,erase等函数
相关文章推荐
- STL中各容器之函数总结
- STL---对STL中的各类常用函数的小总结
- 【C++】STL常用容器总结之五:双端队列deque
- 第九篇:顺序容器及其常用函数
- 【C++】STL常用容器总结之九:集合set
- 《我的第一本c++书》学习笔记:STL之vector容器的常用操作函数
- ACM中常用的STL函数总结
- 【C++】STL常用容器总结之六:基于deque的顺序容器适配器
- 【C++】STL常用容器总结之二:顺序容器
- 【C++】STL常用容器总结之十二:string类
- 顺序容器及其常用函数
- STL常用容器总结——queue单向队列
- STL 笔记(一) 顺序容器 vector、list、deque常用函数
- 【C++】STL常用容器总结之七:对组pair与关联容器
- stl标准容器的常用函数
- C++常用容器类型及其方法总结
- STL常用容器总结——deque双向队列
- STL常用容器总结——stack栈
- 【C++】STL常用容器总结之十:多重映射multimap和多重集合multiset
- 【C++】STL常用容器总结之八:映射map