map和set的区别在于,前者key和value是分开的,前者的key不会重复,value可以重复;后者的key即为value,后者的value不允许重复。还有,map在插入时可以使用 [ ]进行(看插入时代码),其采用了看起来像是数组插值的方法进行元素的插入。

例程

#include<stdexcept>
#include<string>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<ctime>
#include<map>
using namespace std;
long get_a_target_long()
{
long target = 0;
cout<<"target(0~"<<RAND_MAX<<"):";
cin>>target;
return target;
}
string get_a_target_string()
{
long target = 0;
char buf[10];
cout<<"target(0~"<<RAND_MAX<<"):";
cin>>target;
snprintf(buf, 10, "%ld", target);
return string(buf);
}
int compareLongs(const void* a, const void* b)
{
return (*(long*)a - *(long*)b);
} int compareStrings(const void *a, const void *b)
{
if(*(string*)a > *(string*)b)
return 1;
else if(*(string*)a < *(string*)b)
return -1;
else
return 0;
}
void test_map(long& value)
{
cout << "\ntest_map().......... \n"; map<long, string> c;
char buf[10]; clock_t timeStart = clock();
for(long i=0; i< value; ++i)
{
try
{
snprintf(buf, 10, "%d", rand());
c[i] = string(buf); //表现上像是数组插入值,实际上在其内部会自动将i 和 buf 合成为一个pair进行插入
}
catch(exception& p)
{
cout << "i=" << i << " " << p.what() << endl;
abort();
}
}
cout << "milli-seconds : " << (clock()-timeStart) << endl;
cout << "map.size()= " << c.size() << endl; //元素个数
cout << "map.max_size()= " << c.max_size() << endl; long target = get_a_target_long();
timeStart = clock();
auto pItem = c.find(target);
cout << "c.find(), milli-seconds : " << (clock()-timeStart) << endl;
if (pItem != c.end())
cout << "found, value=" << (*pItem).second << endl;
else
cout << "not found! " << endl;
}
int main()
{
long int value;
cout<<"how many elements: ";
cin>>value;
test_map(value);
return 0;
}

运行结果

最新文章

  1. CartO
  2. Theano Inplace
  3. mvc架构
  4. 统计学习方法 --- 感知机模型原理及c++实现
  5. HTML5中地图矢量化
  6. 介绍一个非常好用的跨平台C++开源框架:openFrameworks
  7. Android开源控件PhotoView的使用
  8. OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS)
  9. HTML &lt;!DOCTYPE&gt; 标签 布局引用的几种方法 行级元素与块级元素
  10. LINQ to SQL快速上手 step by step
  11. P6 EPPM Manual Installation Guide (Oracle Database)
  12. isScroll代码
  13. Codevs 1217 借教室 2012年NOIP全国联赛提高组
  14. 浅析node.js
  15. Spring实现无需注解实现自动注入
  16. 浅谈C++中的友元关系
  17. Java中死锁的定位与修复
  18. vue+mescroll=VScrollFull
  19. edgedb 内部pg 数据存储的探索 (一)基本环境搭建
  20. BZOJ2199: [Usaco2011 Jan]奶牛议会(2-SAT)

热门文章

  1. 问题解决:补充安装c语言的库函数和系统调用man手册
  2. AndroidStudio中debug.keystore文件不存在解决办法
  3. 『学了就忘』Linux基础命令 — 28、别名和常用快捷键
  4. 一、spring 环境搭建
  5. .NET 开源工作流: Slickflow流程引擎高级开发(九) -- 条件事件模式解释及应用
  6. webpack 打包样式资源
  7. 第三天 while循环 及其用法
  8. Go defer 原理和源码剖析
  9. python3下tomorow模块 @thread报语法错误def async(n, base_type, timeout=None): ^ SyntaxError: invalid syntax---解决方法
  10. python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况