STL中关联式容器的特性
1、map
代码如下:
/*
* map_1.cpp
*
* Created on: 2013年8月6日
* Author: Administrator
*/ #include <iostream>
#include <map> using namespace std; template <typename T>
void print(T b , T e,char c = ' '){
while(b!= e){
cout<< *b++<<c;
}
cout<<endl;
} template<typename K , typename V>
ostream& operator<<(ostream& o , const pair<K,V>& p){
return o << p.first << ':' << p.second;
} int main(){
map<int,string> mis;
mis.insert(map<int,string>::value_type(5,"刘诗诗"));
mis.insert(pair<int,string>(8,"刘亦菲"));
mis.insert(make_pair(4,"章泽天"));
mis[3] = "allen";
mis[6] = "黄东东";
mis.insert(make_pair(5,"刘诗诗"));
mis.insert(make_pair(5,"zzt"));
print(mis.begin(),mis.end());
}
结果如下:
3:allen 4:章泽天 5:刘诗诗 6:黄东东 8:刘亦菲
2、multimap
代码如下:
/*
* multimap_1.cpp
*
* Created on: 2013年8月6日
* Author: Administrator
*/ #include <iostream>
#include <map>
#include <string> using namespace std; template<typename T>
void print(T b, T e, char c = ' ') {
while (b != e) {
cout << *b++ << c;
}
cout << endl;
} template <typename K ,typename V>
ostream& operator<<(ostream& o , const pair<K,V> p){
return o<<p.first <<' : '<<p.second;
} int main() {
typedef multimap<string, double> MSD;
MSD m;
m.insert(MSD::value_type("章泽天", 40000.0));
m.insert(MSD::value_type("章泽天", 41000.0));
m.insert(MSD::value_type("章泽天", 42000.0));
m.insert(MSD::value_type("章泽天", 43000.0)); m.insert(make_pair("刘诗诗", 30000.0));
m.insert(make_pair("刘诗诗", 35000.0));
m.insert(make_pair("刘诗诗", 39000.0)); m.insert(make_pair("刘亦菲", 50000.0));
m.insert(make_pair("刘亦菲", 55000.0));
m.insert(make_pair("刘亦菲", 40000.0)); print(m.begin(),m.end()); MSD::iterator ib = m.begin(),ie;
MSD cnt;
while(ib != m.end()){
string name = ib->first;
ie = m.upper_bound(name);
double sum = 0.0;
while(ib != ie ){
sum += ib++->second;
cnt.insert(make_pair(name,sum*0.03));
}
} print(cnt.begin(),cnt.end()); }
3、set
测试数据为:
1@qq.com
1@qq.com
1@qq.com
1@qq.com
1@qq.com
2@qq.com
2@qq.com
2@qq.com
3@qq.com
3@qq.com
结果为:
1@qq.com
2@qq.com
3@qq.com
4、mutilset
代码如下:
/*
* mutilset_1.cpp
*
* Created on: 2013年8月6日
* Author: Administrator
*/ #include <iostream>
#include <set>
#include <fstream> using namespace std; template<typename T>
void print(T b , T e, char c = ' '){
while(b!=e){
cout<< *b++<<c;
}
cout<<endl;
} int main(){
multiset<string> ss;
string s; ifstream fin("test"); if(!fin){
return 1;
} while(fin >> s){
ss.insert(s);
} print(ss.begin(),ss.end(),'\n'); }
结果如下:
1@qq.com
1@qq.com
1@qq.com
1@qq.com
1@qq.com
2@qq.com
2@qq.com
2@qq.com
3@qq.com
3@qq.com
STL中关联式容器的特性的更多相关文章
- STL中序列式容器的共性
代码如下: /* * vector_1.cpp * * Created on: 2013年8月6日 * Author: Administrator */ #include <iostream&g ...
- STL源码分析读书笔记--第5章--关联式容器
1.关联式容器的概念 上一篇文章讲序列式容器,序列式容器的概念与关联式容器相对,不提供按序索引.它分为set和map两大类,这两大类各自有各自的衍生体multiset和multimap,的底层机制都是 ...
- stl中顺序性容器,关联容器两者粗略解释
什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...
- STL——关联式容器
一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tre ...
- STL学习笔记--关联式容器
关联式容器依据特定的排序准则,自动为其元素排序.缺省情况下以operator<进行比较.set multiset map multimap是一种非线性的树结构,具体的说是采用一种比较高效的特殊平 ...
- 关联式容器(associative containers)
关联式容器(associative containers) 根据数据在容器中的排列特性,容器可分为序列式(sequence)和关联式(associative)两种. 标准的STL关联式容器分为set( ...
- C++ 容器:顺序性容器、关联式容器和容器适配器
什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...
- STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- 【转】 STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
随机推荐
- 使用gradle建立java application
建立项目目录mkdir java-democd java-demo 初始化项目目录gradle init --type java-application 编译./gradlew build 运行./g ...
- windows下怎样使用md命令一次建立多级子目录
在Windows系统中一次只能够创建一个子目录,在命令提示符窗口则可以一次性创建多个子目录,例如如果想在f盘创建多级子目录,则md 23\13\65\45,后面的数字随便都可以.如果想一次性删除多级目 ...
- git使用点滴:如何查看commit的内容
在push之前有时候会不放心是不是忘记加某些文件,或者是不是多删了个什么东西,这时候希望能够看看上次commit都做了些什么. 一开始想到的是用Git diff,但是git diff用于当前修改尚未c ...
- 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 F - 打铁的箱子
题目描述 作为彩虹岛上最擅长打铁的人,
- GIT修改邮箱
git报错-->! [remote rejected] master -> master (push declined due to email privacy restrictions) ...
- JVM的内存结构,JVM的回收机制
内存作为系统中重要的资源,对于系统稳定运行和高效运行起到了关键的作用,Java和C之类的语言不同,不需要开发人员来分配内存和回收内存,而是由JVM来管理对象内存的分配以及对象内存的回收(又称为垃圾回收 ...
- log4j log for java
1.log4j简介 1.如果程序中出现异常,我们怎么解决? 01.使用异常处理机制===>异常 (但是使用原则是,能不用异常处理机制,最好不用,怎么办?) 02.通过debug调试 (必须掌握) ...
- 2017/11/20 Leetcode 日记
2017/11/14 Leetcode 日记 442. Find All Duplicates in an Array Given an array of integers, 1 ≤ a[i] ≤ n ...
- android remoteView
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha remoteView 可以在 appWidget 和 notification 中 使 ...
- luogu P2619 [国家集训队2]Tree I
题目链接 luogu P2619 [国家集训队2]Tree I 题解 普通思路就不说了二分增量,生成树check 说一下坑点 二分时,若黑白边权有相同,因为权值相同优先选白边,若在最有增量时出现黑白等 ...