今日学习札记——STL常用容器:vector、list、set和multiset、map和multimap(11.17)
来源:互联网 发布:java request 编辑:程序博客网 时间:2024/06/05 02:33
1.vector,头文件#include <vector>
(1) 声明方法:vector<Type> 变量;
范例:
int main()
{
vector<int> IntArray(3);
IntArray[0] = 1;
IntArray[1] = 3;
IntArray[2] = 7;
cout << IntArray[0]<< endl;
return 0;
}
(2)成员函数列表
(1) vector() //大小为零的容器
vector(n) //大小为n的容器
vector(n,const T &t) //初始数据为t
vector( const vector &x) //复制构造函数
(2) void push_back(const T &x) //在容器后端插入数据x
void pop_back() //在容器后端删除数据
(3) void insert(iterator pos, const T &x) //将x插在pos位置前端
(4) iterator erase(iterator pos) //将pos位置的元素清除
iterator erase(iterator first, iterator last) //将first到last的元素清除
void clear() //全部清除
(5) iterator begin() //返回第一个元素的指针
iterator end() //返回最后一个元素的指针
(6) size() //大小
(7) empty() //是否为空
(8) reference front() //返回第一个元素
reference back() //返回最后一个元素
reference at(pos) //返回第pos个位置的元素
(9) void swap(vector &x) //将容器的内容与x容器互换
(10) operator[] //以传统数组方式存钱容器中的元素
(3)在使用容器定位器之前,要先声明vector定位器:(包含头文件#include <iterator>)
vector<Type>::iterator 定位器名称;
例子:
//函数PrintOut
void PrintOut(vector<int> &container){
if(container.empty())
cout<<"The Container is Empty!"<<endl;
else{
//迭代器声明方法
vector<int>::iterator iter;
for(iter = container.begin(); iter != container.end();iter++)
cout <<*iter;
cout<<endl;
}
}
int main()
{
vector<int> IntArray(3);
IntArray[0] = 1;
IntArray[1] = 3;
IntArray[2] = 7;
//1.输出IntArray
cout << "Data in IntArray: ";
PrintOut(IntArray);
//2.Push_back两个元素
cout<<"Push two element(4,5) in the IntArray"<<endl;
IntArray.push_back(4);
IntArray.push_back(5);
cout << "Data in IntArray: ";
PrintOut(IntArray);
//3.用insert插入一个元素
cout<<"Insert elements(6) in front of IntArray"<<endl;
IntArray.insert(IntArray.begin(),6);
cout << "Data in IntArray: ";
PrintOut(IntArray);
//4.用erase擦除最后一个元素
cout<<"Erase last element in the IntArray"<<endl;
IntArray.erase(IntArray.end()-1); //end()-1指向最后一个元素
cout << "Data in IntArray: ";
PrintOut(IntArray);
//5.用pop_back删除最后两个元素
cout<<"Delete last two elements in the IntArray"<<endl;
IntArray.pop_back();
IntArray.pop_back();
cout << "Data in IntArray: ";
PrintOut(IntArray);
//6.根据位置返回元素
cout<<"First elements: "<<IntArray.front()<<endl;
cout<<"Second elements: "<<IntArray.at(1)<<endl;
cout<<"last elements: "<<IntArray.back()<<endl;
//7.用数组方式遍历
for(int i = 0; i< IntArray.size(); i++)
cout<<IntArray[i];
return 0;
}
--------------------------------------
2. list,头文件:#include <list>
list容器是一种双向链接的串行,每一个元素都知道前面一个与后面一个元素;但list容器并不能利用[]运算符来随机存取数据。
(1)声明方法: list<Type> 变量;
范例:
int main()
{
//1.头插法构造L
list<int> L;
L.push_front(1);
L.push_front(3);
L.push_front(7);
//2.尾插法构造L
L.push_back(4);
L.push_back(5);
L.push_back(6);
cout << L.front() << endl;
cout << L.back() <<endl;
return 0;
}
(2)成员函数列表
(1) list() //大小为零的容器
list(n) //大小为n的容器
list(n, const T &t) //初始数据为t
list(const list& x) //复制构造函数
(2) void push_front(const T &t) //在容器前端插入数据t
void pop_front() //在容器前端删除数据
void push_back(const T &t) //在容器后端插入数据t
void pop_back() //在容器后端删除数据
(3) void insert(iterator pos, const T &x) //将x插入到pos位置的前端
(4) iterator erase(iterator pos) //将pos位置的元素清除
iterator erase(iterator first, iterator last) //将first到last的元素清除
void clear() //全部清除
(5) iterator begin() //返回第一个元素的指针
iterator end() //返回最后一个元素的指针
(6) size() //尺寸
(7) bool empty() //是否为空
(8) reference front() //返回第一个元素
reference back() //返回最后一个元素
reference at(pos) //返回第pos个位置的元素
(9) void swap(lsit &x) //交换两个list容器
(10) void merge(list &x) //将x容器与自己结合
(11) void sort() //以递增方式排序
(12) void remove(const T &x) //删除容器中内容为x的元素
(3)在使用容器定位器之前,要先声明vector定位器:(包含头文件#include <iterator>)
list<Type>::iterator 定位器名称;
---------------------------------------
3.set和multiset容器,包含头文件:#include <set>
[set 集合]在set容器中,每一个元素的关键值必须都不同,而multiset容器中则允许有重复的关键值。
(1)声明方法:set<Type> 变量;
set<Type, less<key> > 变量; //排序方式通常需要传入一个排序的函数对象,注意后面那个>必须要用空格隔开
multiset<Type> 变量;
multiset<Type, less<key> > 变量;
范例:
int main()
{
typedef set<string, less<string> > string_set;
string Months[] ={"January","February","March","April","May","June","July"};
string_set S(Months,Months+7);
cout << *S.begin() << endl;
return 0;
}
(2)成员函数列表
(1) set() //大小为零的容器
set(const key_compare& comp) //大小为零的容器,使用comp这种排序方式
set(const set &x) //复制构造函数
multiset()
multiset(const key_compare& comp)
multiset(const multiset &x)
(2) iterator erase(iterator pos) //将pos位置的元素清除
iterator erase(const key_type & k) //将关键字为k的元素删除
void clear() //全部清除
(3) iterator begin() //返回第一个元素的指针
iterator end() //返回最后一个元素的指针
(4) size() //大小
(5) bool empty() //是否为空
(6) iterator find(const key_type &k) //将关键字为k的元素找出,并返回一个指向这个元素的指针
(7) iterator upper_bound(const key_type &k) //寻找第一个关键字不小于k的元素
iterator lower_bound(const key_type &k) //寻找第一个关键字不大于k的元素
(8) void swap(set &x) //将容器内容与x容器互换
void swap(multiset &x)
(3)在使用容器定位器之前,要先声明vector定位器:(包含头文件#include <iterator>)
set<Type>::iterator 定位器名称;
multiset<Type>::iterator 定位器名称;
----------------------------------------
4.map和multimap容器,包含头文件#include <map>
[map 复数集合]map/multimap容器中的每一项元素能存储相关键值和对应的数据,并按键值来进行排序的。
(1)声明方法:map<Type1,Type2> 变量;
map<Type1,Type2, less<Type2> > 变量; //排序方式通常需要传入一个排序的函数对象,注意后面那个>必须要用空格隔开
multimap<Type1,Type2> 变量;
multimap<Type1,Type2, less<Type2> > 变量;
范例:
int main()
{
typedef map<string, string, less<string> > string_map;
string_map M;
string_map::iterator iter;
M.insert(string_map::value_type("3","5.56"));
M.insert(string_map::value_type("7","2.23"));
M.insert(string_map::value_type("5","13.14"));
cout << "Data in M:" << endl;
for(iter = M.begin(); iter!=M.end(); iter++)
cout<<iter->first<<"+"<<iter->second<<"i"<<endl;
return 0;
}
(2)成员函数列表
(1) map() //大小为零的容器
map(const key_compare &comp) //大小为零的容器,使用comp这种排序方式
map(const map &x) //复制构造函数
multimap()
multimap(const key_compare &comp)
multimap(const multimap &x)
(2) iterator erase(iterator pos)
iterator erase(const key_type &k)
void clear()
(3) iterator begin()
iterator end()
(4) size()
(5) bool empty()
(6) iterator find(const key_type &k)
(7) iterator upper_bound(const key_type &k)
iterator lower_bound(const key_type &k)
(8) void swap(map &x)
void swap(multimap &x)
(3)在使用容器定位器之前,要先声明vector定位器:(包含头文件#include <iterator>)
map<Type1,Type2>::iterator 定位器名称;
multimap<Type1,Type2>::iterator 定位器名称;
(1) 声明方法:vector<Type> 变量;
范例:
int main()
{
vector<int> IntArray(3);
IntArray[0] = 1;
IntArray[1] = 3;
IntArray[2] = 7;
cout << IntArray[0]<< endl;
return 0;
}
(2)成员函数列表
(1) vector() //大小为零的容器
vector(n) //大小为n的容器
vector(n,const T &t) //初始数据为t
vector( const vector &x) //复制构造函数
(2) void push_back(const T &x) //在容器后端插入数据x
void pop_back() //在容器后端删除数据
(3) void insert(iterator pos, const T &x) //将x插在pos位置前端
(4) iterator erase(iterator pos) //将pos位置的元素清除
iterator erase(iterator first, iterator last) //将first到last的元素清除
void clear() //全部清除
(5) iterator begin() //返回第一个元素的指针
iterator end() //返回最后一个元素的指针
(6) size() //大小
(7) empty() //是否为空
(8) reference front() //返回第一个元素
reference back() //返回最后一个元素
reference at(pos) //返回第pos个位置的元素
(9) void swap(vector &x) //将容器的内容与x容器互换
(10) operator[] //以传统数组方式存钱容器中的元素
(3)在使用容器定位器之前,要先声明vector定位器:(包含头文件#include <iterator>)
vector<Type>::iterator 定位器名称;
例子:
//函数PrintOut
void PrintOut(vector<int> &container){
if(container.empty())
cout<<"The Container is Empty!"<<endl;
else{
//迭代器声明方法
vector<int>::iterator iter;
for(iter = container.begin(); iter != container.end();iter++)
cout <<*iter;
cout<<endl;
}
}
int main()
{
vector<int> IntArray(3);
IntArray[0] = 1;
IntArray[1] = 3;
IntArray[2] = 7;
//1.输出IntArray
cout << "Data in IntArray: ";
PrintOut(IntArray);
//2.Push_back两个元素
cout<<"Push two element(4,5) in the IntArray"<<endl;
IntArray.push_back(4);
IntArray.push_back(5);
cout << "Data in IntArray: ";
PrintOut(IntArray);
//3.用insert插入一个元素
cout<<"Insert elements(6) in front of IntArray"<<endl;
IntArray.insert(IntArray.begin(),6);
cout << "Data in IntArray: ";
PrintOut(IntArray);
//4.用erase擦除最后一个元素
cout<<"Erase last element in the IntArray"<<endl;
IntArray.erase(IntArray.end()-1); //end()-1指向最后一个元素
cout << "Data in IntArray: ";
PrintOut(IntArray);
//5.用pop_back删除最后两个元素
cout<<"Delete last two elements in the IntArray"<<endl;
IntArray.pop_back();
IntArray.pop_back();
cout << "Data in IntArray: ";
PrintOut(IntArray);
//6.根据位置返回元素
cout<<"First elements: "<<IntArray.front()<<endl;
cout<<"Second elements: "<<IntArray.at(1)<<endl;
cout<<"last elements: "<<IntArray.back()<<endl;
//7.用数组方式遍历
for(int i = 0; i< IntArray.size(); i++)
cout<<IntArray[i];
return 0;
}
--------------------------------------
2. list,头文件:#include <list>
list容器是一种双向链接的串行,每一个元素都知道前面一个与后面一个元素;但list容器并不能利用[]运算符来随机存取数据。
(1)声明方法: list<Type> 变量;
范例:
int main()
{
//1.头插法构造L
list<int> L;
L.push_front(1);
L.push_front(3);
L.push_front(7);
//2.尾插法构造L
L.push_back(4);
L.push_back(5);
L.push_back(6);
cout << L.front() << endl;
cout << L.back() <<endl;
return 0;
}
(2)成员函数列表
(1) list() //大小为零的容器
list(n) //大小为n的容器
list(n, const T &t) //初始数据为t
list(const list& x) //复制构造函数
(2) void push_front(const T &t) //在容器前端插入数据t
void pop_front() //在容器前端删除数据
void push_back(const T &t) //在容器后端插入数据t
void pop_back() //在容器后端删除数据
(3) void insert(iterator pos, const T &x) //将x插入到pos位置的前端
(4) iterator erase(iterator pos) //将pos位置的元素清除
iterator erase(iterator first, iterator last) //将first到last的元素清除
void clear() //全部清除
(5) iterator begin() //返回第一个元素的指针
iterator end() //返回最后一个元素的指针
(6) size() //尺寸
(7) bool empty() //是否为空
(8) reference front() //返回第一个元素
reference back() //返回最后一个元素
reference at(pos) //返回第pos个位置的元素
(9) void swap(lsit &x) //交换两个list容器
(10) void merge(list &x) //将x容器与自己结合
(11) void sort() //以递增方式排序
(12) void remove(const T &x) //删除容器中内容为x的元素
(3)在使用容器定位器之前,要先声明vector定位器:(包含头文件#include <iterator>)
list<Type>::iterator 定位器名称;
---------------------------------------
3.set和multiset容器,包含头文件:#include <set>
[set 集合]在set容器中,每一个元素的关键值必须都不同,而multiset容器中则允许有重复的关键值。
(1)声明方法:set<Type> 变量;
set<Type, less<key> > 变量; //排序方式通常需要传入一个排序的函数对象,注意后面那个>必须要用空格隔开
multiset<Type> 变量;
multiset<Type, less<key> > 变量;
范例:
int main()
{
typedef set<string, less<string> > string_set;
string Months[] ={"January","February","March","April","May","June","July"};
string_set S(Months,Months+7);
cout << *S.begin() << endl;
return 0;
}
(2)成员函数列表
(1) set() //大小为零的容器
set(const key_compare& comp) //大小为零的容器,使用comp这种排序方式
set(const set &x) //复制构造函数
multiset()
multiset(const key_compare& comp)
multiset(const multiset &x)
(2) iterator erase(iterator pos) //将pos位置的元素清除
iterator erase(const key_type & k) //将关键字为k的元素删除
void clear() //全部清除
(3) iterator begin() //返回第一个元素的指针
iterator end() //返回最后一个元素的指针
(4) size() //大小
(5) bool empty() //是否为空
(6) iterator find(const key_type &k) //将关键字为k的元素找出,并返回一个指向这个元素的指针
(7) iterator upper_bound(const key_type &k) //寻找第一个关键字不小于k的元素
iterator lower_bound(const key_type &k) //寻找第一个关键字不大于k的元素
(8) void swap(set &x) //将容器内容与x容器互换
void swap(multiset &x)
(3)在使用容器定位器之前,要先声明vector定位器:(包含头文件#include <iterator>)
set<Type>::iterator 定位器名称;
multiset<Type>::iterator 定位器名称;
----------------------------------------
4.map和multimap容器,包含头文件#include <map>
[map 复数集合]map/multimap容器中的每一项元素能存储相关键值和对应的数据,并按键值来进行排序的。
(1)声明方法:map<Type1,Type2> 变量;
map<Type1,Type2, less<Type2> > 变量; //排序方式通常需要传入一个排序的函数对象,注意后面那个>必须要用空格隔开
multimap<Type1,Type2> 变量;
multimap<Type1,Type2, less<Type2> > 变量;
范例:
int main()
{
typedef map<string, string, less<string> > string_map;
string_map M;
string_map::iterator iter;
M.insert(string_map::value_type("3","5.56"));
M.insert(string_map::value_type("7","2.23"));
M.insert(string_map::value_type("5","13.14"));
cout << "Data in M:" << endl;
for(iter = M.begin(); iter!=M.end(); iter++)
cout<<iter->first<<"+"<<iter->second<<"i"<<endl;
return 0;
}
(2)成员函数列表
(1) map() //大小为零的容器
map(const key_compare &comp) //大小为零的容器,使用comp这种排序方式
map(const map &x) //复制构造函数
multimap()
multimap(const key_compare &comp)
multimap(const multimap &x)
(2) iterator erase(iterator pos)
iterator erase(const key_type &k)
void clear()
(3) iterator begin()
iterator end()
(4) size()
(5) bool empty()
(6) iterator find(const key_type &k)
(7) iterator upper_bound(const key_type &k)
iterator lower_bound(const key_type &k)
(8) void swap(map &x)
void swap(multimap &x)
(3)在使用容器定位器之前,要先声明vector定位器:(包含头文件#include <iterator>)
map<Type1,Type2>::iterator 定位器名称;
multimap<Type1,Type2>::iterator 定位器名称;
1 0
- 今日学习札记——STL常用容器:vector、list、set和multiset、map和multimap(11.17)
- STL 各种容器 vector deque list set map multiset map multimap stack queue priority_queue
- list vector set map multimap multiset 容器大揭秘
- STL模板总结归纳(set,multiset和map,multimap)
- STL容器 set、 multiset、map、multimap
- STL 笔记(二) 关联容器 map、set、multimap 和 multimap常用函数
- C++STL中,map/multimap,set/multiset 和vector的排序
- 【STL源码剖析读书笔记】【第5章】关联式容器之set、map、multiset和multimap
- STL源码剖析-关联式容器之set,map,multiset和multimap
- STL常用容器用法之——Map和multimap
- STL — 从源码层面区别map set和multiset multimap
- STL常用容器用法之——Set和multiset
- STL总结之set/multiset和map/multimap
- STL学习笔记— —容器map和multimap
- STL学习笔记8— —容器map和multimap
- STL学习笔记— —容器set和multiset
- STL学习笔记7— —容器set和multiset
- 关联容器(map、set、multimap、multiset)
- Android打开关闭触摸提示音
- iOS --- 使用XCTest进行单元测试
- windows环境下配置my.ini文件对mysql完全没用影响
- python学习笔记(一)
- 【计算机网络】子网掩码什么用?什么是网段?什么叫做在“同一网段”?
- 今日学习札记——STL常用容器:vector、list、set和multiset、map和multimap(11.17)
- python opencv 配置
- 移除HTML标签strip_tags()函数
- 89Gray Code
- 关于int main(int argc,char*argv[])的玩意
- jvm中的堆和栈
- 基于Linux的消息队列及多线程编程实现的聊天室(一)
- redis性能监控
- 天声人語 20151117 フードバンクに全国組織