map的基本用法:如插入、查找、删除、遍历等等,同时告诉你如何实现双键map,包括

(1) 只有两个键都匹配才命中目标
(2) 两个键中任意一个匹配就命中目标

可以扩展到多键

(一) 介绍
特点:
1.map将Key的object和T的Object绑定到一起,因此是一种Pair Associative Container, 表示其value type为 pair。
2.它同时也是Unique Associative Container,表示没有两个元素具有相同的Key。
3.它还是一种Sorted Associative Container,因此第三个参数只能是less,greater之类的functor, 相比较而言,
  hash table是 equal_to, not_equal_to之类的functor。
(二) 基本用法
通过以下范例,可以看出map的一些基本用法: 插入、查找、删除、遍历等等。
/* 这个是MS的bug,看着心烦,屏蔽掉警告 */
#if defined (_MSC_VER)
#pragma warning(disable: 4786)
#endif
#include <iostream>
#include <map>
#include <algorithm>
int main(int argc, char *argv[])
{
    /* define a map */
    std::map _map;
    /* insert */
    _map.insert( std::map::value_type(0, 32.8) );
    _map.insert( std::map::value_type(1, 33.2) );
    _map.insert( std::map::value_type(2, 35.8) );
    _map.insert( std::map::value_type(3, 36.4) );
    _map.insert( std::map::value_type(4, 37.8) );
   _map.insert( std::map::value_type(5, 35.8) );
    /* 这个是常用的一种map赋值方法 */
    _map[7] = 245.3;
    /* find by key */
    std::map::iterator itr;
    itr = _map.find(4);
    if( itr != _map.end() )
    {
        std::cout  << "Item:"  << itr->first << " found, content: " << itr->second << std::endl
    }
    std::cout  << std::endl;
    /* delete item from map */
    if( itr != _map.end() )
    {
        _map.erase(itr);
    }
    /* travel through a map */
    std::map::iterator itr1  =  _map.begin();
    for(  ;  itr1  !=  _map.end();  ++itr1 )
    {
        std::cout  << "Item:"  << itr1->first << ", content: " << itr1->second << std::endl;
    }
    std::cout  << std::endl;
    /* empty a map */
    _map.clear();
    return 0;
}

http://www.cnblogs.com/David-Li/archive/2008/07/15/1243252.html
posted on 2009-03-17 12:01  AlexusLi  阅读(1688)  评论(0编辑  收藏  举报