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. Typecho-反序列化漏洞学习

    目录 Typecho-反序列化漏洞学习 0x00 前言 0x01 分析过程 0x02 调试 0x03 总结 0xFF 参考 Typecho-反序列化漏洞学习 0x00 前言 补丁: https://g ...

  2. 使用CSS更改图标的颜色

    我们经常在很多网站上见到更改网站的主题时,图标的颜色也改变了,我们总是觉的这一项功能非常伟大,因为我们知道使用CSS是无法完成更改图片的颜色的.那么,网站上随心所欲的图标颜色是采用N多个图片不断的切换 ...

  3. 【SQL SERVER】触发器(二)

    前言:上面一片文章整理了触发器的基础知识点,下面我们看看如何使用触发器以及insert和delete表: 这里我们补充一下触发器的缺点: 性能较低.我们在运行触发器时,系统处理的大部分时间花费在参照其 ...

  4. enumerate()和map()函数用法

    一.python enumerate用法 先出一个题目: 1.有一 list= [1, 2, 3, 4, 5, 6] 请打印输出: 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 打印输出 ...

  5. HTML框架与表单

    1.框架处理结构 <html> <head> <meta http-equiv="Content-Type" content="text/h ...

  6. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

  7. hdu 1069 动规 Monkey and Banana

     Monkey and Banana Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  8. 编程经验(C#)

    本文记录我在编程里学到的一些小技巧,遇到了就记录一下. 1.如果通用接口中的回调没有参数,而调用时需要参数,这个时候可以用匿名函数多封装一层.例如: Private void Main() { Fun ...

  9. Google Code Jam 2009 Qualification Round Problem A. Alien Language

    https://code.google.com/codejam/contest/90101/dashboard#s=p0 Problem After years of study, scientist ...

  10. mysql max_allowed_packet 设置

    mysql根据my.cnf中max_allowed_packet的大小来限制接收到的数据包大小. 据官网描述,如下图. 数据包的值范围为1k~1G, 只能是1024的倍数,不能整除1024的,会向下取 ...