Map使用之关联数组
来源:互联网 发布:欧美流行歌手知乎 编辑:程序博客网 时间:2024/06/05 18:06
背景:在C++ Standard Library中,Map容器使用pair(Key/Value)存储元素,而且不允许重复元素。如果给定一个Key,存在着唯一的对应的Value,Key与Value存在着某种关联,由此,可将Map作为关联数组使用。
现举例如下
Test OS: Windows 7
Test IDE: Visual Studio 2005
Code Example:
#include "stdafx.h"#include <iostream>#include <map>#include <string>using namespace std;int _tmain(int argc, _TCHAR* argv[]){/* Create map / associative map * - keys are strings * - values are float */typedef map<string, float> StringFloatMap;// create empty containerStringFloatMap stocks;// insert some elementsstocks["TXKG"] = 276.50;stocks["GOOG"] = 700.34;stocks["AAPL"] = 498.26;stocks["BMW"] = 823.23;stocks["NONE"] = 0.72;stocks["NOKIA"] = 12.25;// print all elementsStringFloatMap::iterator pos;for(pos = stocks.begin(); pos != stocks.end(); ++pos){cout << "stock:" << pos->first << "\t"<< "price:" << pos->second << endl;}cout << endl;// all stocks doubledfor(pos = stocks.begin(); pos != stocks.end(); ++pos){pos->second *= 2;}// print all elementsfor(pos = stocks.begin(); pos != stocks.end(); ++pos){cout << "stock:" << pos->first << "\t"<< "price:" << pos->second << endl;}cout << endl;// rename key from "AAPL" to "APPLE"stocks["APPLE"] = stocks["AAPL"];stocks.erase("AAPL");// print all elementsfor(pos = stocks.begin(); pos != stocks.end(); ++pos){cout << "stock:" << pos->first << "\t"<< "price:" << pos->second << endl;}cout << endl;system("pause");return 0;}
Test Result as follow:
可见,使用pair第一元素类型作为下标,寻址到该Key对应的Value的引用,可以很方便地操纵元素。
这里需要注意:
当使用Key作为下标时,如果Map中已经存在该元素,则返回该元素Value的引用,如果不存在,则会插入一个以下标为Key的元素,并使用Value对应数据类型的Default构造函数初始化Value。即上例中中如果使用语句stocks["abcd"] = 5.0,则插入Key为“abcd”的元素,并以float 0 初始化,紧接着,将该元素的Value赋值为5.0。
- Map使用之关联数组
- 关联数组Map<...>
- 关联容器之map
- 使用map关联容器
- STL之关联容器(pair、map、set的使用)
- STL之关联容器(pair、map、set的使用)
- STL之MAP关联容器
- STL关联容器之Map
- STL 之 map 关联容器
- STL关联容器之map
- Python3 字典(dict, map, 关联数组)
- C++ STL入门教程(5)——map(关联数组)的使用(附完整程序代码)
- 存储子程序和包之使用关联数组
- 数组 Map 使用小结
- PHP之数组索引,关联
- C++STL之关联容器【map】【set】
- 关联查询之map的延伸用法
- C++primer_关联容器之map
- __attribute__ ((aligned (n), packed))
- loading图标现在相关链接
- printf修饰符
- [分享] 教你如何让谷歌浏览器新建标签自动打开你想要的网址
- C++ Map 容器
- Map使用之关联数组
- UBOOT详细解读
- 霍夫曼编码的另一种理解
- Android4.1.2原生输入法的bug
- 正则表达式\和/的位置
- Redis 命令手册
- PB编译错误:Mismatched time stamp on .rel file for module nk.exe requesting kernel fixup. Valid .rel file
- [Android] Android开发优化之——从代码角度进行优化
- Linux软件的安装和卸载