multimap
:可重复映射 。包含头文件<map>
。- 创建容器 。
- 初始化容器 。初始化时可以指定容器的容量、为容器指定一系列初始值、为容器中的数据指定比较方法……
#include <iostream>#include <vector>#include <algorithm>#include <list>#include <set>using namespace std;//使用结构体作为函数对象int main(int argc, char** argv) {//初始容量为 12 向量容器vector<int> vec(12);cout<<"容器大小:"<<vec.size()<<endl;//初始化长度为 2,且值为 12 、30的向量容器vector<int> vec1 {12,30};cout<<"容器大小:"<<vec1.size()<<endl;//构造整型链表,初始容量 34list<int> lst(34);cout<<"容器大小:"<<lst.size()<<endl;//整型数组int ary1[5]= {1,2,3,4,5};//用数组初始化vector<int> vec2(ary1,ary1+5);cout<<"容器大小:"<<vec2.size()<<endl;//用向量初始化链表list<int> intList(vec.begin(),vec.end());cout<<"容器大小:"<<intList.size()<<endl;//用链表初始化集合set<int> intSet(lst.begin(),lst.end());cout<<"容器大小:"<<intSet.size()<<endl;return 0;}
输出结果:文章插图
初始化
map、set
容器时 。//创建并初始化集合set<int> mySet {1,5,3};//构造 map 容器map<std::string, int> myMap;//构造并初始化std::map<std::string, int>myMap{ {"rose",1},{"jone",2} };//输出for (auto iter = myMap.begin(); iter != myMap.end(); ++iter) {cout << iter->first << " " << iter->second << endl;}
输出结果:jone 2rose 1
2.2.2 添加数据一般要求容器组件提供对数据进行常规维护的方法(增、删、改、查……) 。STL
为 2
类容器提供了insert
方法,可以在指定的位置为容器加入新的数据 。这里需要注意:STL
位置一般用迭代器描述,而不是索引位置 。
// 初始化向量vector<int> vec {1, 2, 3, 4, 5};//开始迭代器vector<int>::iterator begin=vec.begin();//结束迭代器vector<int>::iterator end=vec.end();cout<<"原向量容器数据"<<endl;for(; begin!=end; begin++) {cout<<*begin<<"\t";}//重置开始位置begin=vec.begin();// 指向容器vec的第三个元素begin =begin + 2;//在位置 3 插入数据vec.insert( begin, 6 );//重置开始和结束位置begin=vec.begin();end=vec.end();cout<<"\n插入数据后:"<<endl;for(; begin!=end; begin++) {cout<<*begin<<"\t";}
输出结果:文章插图
关联式容器的插入数据效果和序列式容插入效果会有不同 。
- 序列式容器中插入数据后,期望位置和最终结果位置是一样的 。如期望插入在第
3
个数据之后,实际也是插入在第3
个数据之后 。 - 关联式容器会自动按
键
进行位置重排,会出现期望位置和最终位置不一样的情况(特别在以红黑树存储数据时,为了保持平衡性,会对数据进行平衡处理) 。
文章插图
STL
还为序列式容器提供了push、push_back、push_front
方法,此方法只能在容器头或容器尾进行数据添加 。// 声明一个向量vector<int> vec(10);// 压入数据vec.push_back(1);vec.push_back( 1 );vec.push_back( 2 );// 声明一个链表list<int> ls(10);// 压入数据ls.push_back( 1 );ls.push_front( 2 );// 声明一个栈,栈只有 push 方法stack<string> st;// 压入数据st.push("A");
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 【C++】从零开始的CS:GO逆向分析2——配置GLFW+IMGUI环境并创建透明窗口
- C++自学笔记 Composition:对象组合
- 会计核算概述是什么?
- 查账的概述是什么?
- 为什么网上买不到EffectiveSTL这本书呢
- 计算机语言有哪些
- 车内阅读灯是什么
- 奔驰R级是什么
- 蓝旗亚Thesis是什么
- 赛纳是什么