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中关联式容器的特性的更多相关文章

  1. STL中序列式容器的共性

    代码如下: /* * vector_1.cpp * * Created on: 2013年8月6日 * Author: Administrator */ #include <iostream&g ...

  2. STL源码分析读书笔记--第5章--关联式容器

    1.关联式容器的概念 上一篇文章讲序列式容器,序列式容器的概念与关联式容器相对,不提供按序索引.它分为set和map两大类,这两大类各自有各自的衍生体multiset和multimap,的底层机制都是 ...

  3. stl中顺序性容器,关联容器两者粗略解释

    什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...

  4. STL——关联式容器

    一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tre ...

  5. STL学习笔记--关联式容器

    关联式容器依据特定的排序准则,自动为其元素排序.缺省情况下以operator<进行比较.set multiset map multimap是一种非线性的树结构,具体的说是采用一种比较高效的特殊平 ...

  6. 关联式容器(associative containers)

    关联式容器(associative containers) 根据数据在容器中的排列特性,容器可分为序列式(sequence)和关联式(associative)两种. 标准的STL关联式容器分为set( ...

  7. C++ 容器:顺序性容器、关联式容器和容器适配器

    什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...

  8. STL中的set容器的一点总结

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  9. 【转】 STL中的set容器的一点总结

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

随机推荐

  1. LoadRunner去除事物中的程序的执行时间

    大家在性能测试过程中,经常会用到程序处理或组织数据,以达到一定的测试目的,但是程序本身执行会消耗一些时间,这部分消耗的时间是包含在响应时间里面,此时,响应时间=正常响应时间+程序执行消耗时间.那么如何 ...

  2. 第12课:Spark Streaming源码解读之Executor容错安全性

    一.Spark Streaming 数据安全性的考虑: Spark Streaming不断的接收数据,并且不断的产生Job,不断的提交Job给集群运行.所以这就涉及到一个非常重要的问题数据安全性. S ...

  3. ie6 css 返回顶部图标固定在浏览器右下角

    比较常用记录一下. #e_float{ _position:absolute; _bottom:auto; _right:50%; _margin-right:-536px; _top:express ...

  4. OutputStreamWriter API 以及源码解读

    OutputStreamWriter是字符流与字节流之间的桥梁. 通过它写入的字符流可以通过特殊的字符集转化为字节流.这个特殊的字符集可以指定,也可以采用平台默认的字符集. 每一次调用write()方 ...

  5. 【SQL】175. Combine Two Tables

    Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId ...

  6. Hibernate 过滤查询(hibernate过滤器的使用)

    我们在开发过程中过滤查询使用的还是挺多的,今天来学习一下hibernate的过滤器的使用,首先学习在配置文件中如何使用,然后再介绍如何使用注解配置. 1.使用配置文件配置过滤器  1)首先我们使用my ...

  7. HDU 5952 [DFS]

    题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=5952] 题意:给出一张无向图,然后判断这张图中一共有多少个不同的大小为S的完全图,并且保证每个点的度 ...

  8. POJ 2185 kmp

    题目链接:http://poj.org/problem?id=2185 题意:给出一个R*C(10000 * 75)的矩形字符串,然你求最小的不严格重复矩阵,比如,ABA,最小的重复矩阵是AB,经过复 ...

  9. 范浩强treap 普通平衡树

    增加Split(分裂),Merge(合并)操作,非常好写,时间也不比普通treap慢什么. #include<bits/stdc++.h> using namespace std; str ...

  10. CodeForces - 1016D Vasya And The Matrix

    题面在这里! 很明显二进制每一位都是无关的,所以可以先把原问题简化:给矩阵中的每个位置填入0/1,使得特定行/列有奇数个1,其他行/列有偶数个1. 一个比较好想的方法是对行和列 列出 n+m 个异或方 ...