Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!

1.map最基本的构造函数;

map<string , int >mapstring; 

map<int ,string >mapint; 

map<string, char>mapstring; 

map< char ,string>mapchar; 

map<char ,int>mapchar; 

map<int ,char >mapint;

2. map添加数据;

map<int ,string> maplive; 

maplive.insert(pair<int,string>(,"aclive")); 

maplive.insert(map<int,string>::value_type(,"hai")); 

maplive[]="April";//map中最简单最常用的插入添加!

3,map中元素的查找:

find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。

map<int ,string >::iterator l_it;; 

l_it=maplive.find(); 

if(l_it==maplive.end()) 

    cout<<"we do not find 112"<<endl; 

else 
  
   cout<<"wo find 112"<<endl;

4,map中元素的删除: 如果删除112;

map<int ,string >::iterator l_it;;

 l_it=maplive.find(); 

if(l_it==maplive.end()) 

    cout<<"we do not find 112"<<endl; 

else 

    maplive.erase(l_it); //delete 112; 

5,map中 swap的用法: Map中的swap不是一个容器中的元素交换,而是两个容器交换;

For example:

#include <map> 

#include <iostream>

using namespace std;

int main( ) 

{ 

  map <int, int> m1, m2, m3;   

  map <int, int>::iterator m1_Iter;

  m1.insert ( pair <int, int> ( ,  ) );   

  m1.insert ( pair <int, int> ( ,  ) );   

  m1.insert ( pair <int, int> ( ,  ) );   

  m2.insert ( pair <int, int> ( ,  ) ); 

  m2.insert ( pair <int, int> ( ,  ) );   

  m3.insert ( pair <int, int> ( ,  ) );

  cout << "The original map m1 is:"; 

  for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ ) 

    cout << " " << m1_Iter->second; 

  cout << "." << endl;

  m1.swap( m2 );  // This is the member function version of swap //m2 is said to be the argument map; m1 the target map

  cout << "After swapping with m2, map m1 is:"; 

  for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ ) 

    cout << " " << m1_Iter -> second; cout << "." << endl; 

  cout << "After swapping with m2, map m2 is:";

   for ( m1_Iter = m2.begin( ); m1_Iter != m2.end( ); m1_Iter++ ) 

    cout << " " << m1_Iter -> second; cout << "." << endl; 

  swap( m1, m3 );  // This is the specialized template version of swap

  cout << "After swapping with m3, map m1 is:"; 

  for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ ) 

    cout << " " << m1_Iter -> second; cout << "." << endl; 

}

6.map的sort问题: Map中的元素是自动按key升序排序,所以不能对map用sort函数:

For example:

#include <map> 

#include <iostream>

using namespace std;

int main( ) 

{ 

  map <int, int> m1; 

  map <int, int>::iterator m1_Iter;

  m1.insert ( pair <int, int> ( ,  ) ); 

  m1.insert ( pair <int, int> ( ,  ) ); 

  m1.insert ( pair <int, int> ( ,  ) ); 

  m1.insert ( pair <int, int> ( ,  ) ); 

  m1.insert ( pair <int, int> ( ,  ) ); 

  m1.insert ( pair <int, int> ( ,  ) );

  cout << "The original map m1 is:"<<endl; 

  for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ ) 

    cout << m1_Iter->first<<" "<<m1_Iter->second<<endl; 

} 

The original map m1 is:             请按任意键继续. . .

7, map的基本操作函数: C++ Maps是一种关联式容器,

包含“关键字/值”对

begin() 返回指向map头部的迭代器

clear() 删除所有元素

count() 返回指定元素出现的次数

empty() 如果map为空则返回true

end() 返回指向map末尾的迭代器

equal_range() 返回特殊条目的迭代器对

erase() 删除一个元素

find() 查找一个元素

get_allocator() 返回map的配置器

insert() 插入元素

key_comp() 返回比较元素key的函数

lower_bound() 返回键值>=给定元素的第一个位置

max_size() 返回可以容纳的最大元素个数

rbegin() 返回一个指向map尾部的逆向迭代器

rend() 返回一个指向map头部的逆向迭代器

size() 返回map中元素的个数

swap() 交换两个map

upper_bound() 返回键值>给定元素的第一个位置

value_comp() 返回比较元素value的函数

转自http://blog.sina.com.cn/daylive——C++ STL map的更多相关文章

  1. 转自http://blog.sina.com.cn/daylive——C++ STL set&multiset

    C++ STL set和multiset的使用 1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就  像一个集合一样.所有的操作的都是严格在logn时间 ...

  2. http://blog.sina.com.cn/s/blog_4c3b6a070100etad.html

    http://blog.sina.com.cn/s/blog_4c3b6a070100etad.html

  3. http://blog.sina.com.cn/s/blog_5bd6b4510101585x.html

    http://blog.sina.com.cn/s/blog_5bd6b4510101585x.html

  4. quartus ii13.0~16.0 调用uedit (转载http://blog.sina.com.cn/s/blog_6d5560f00102vax6.html)

    转自 http://blog.sina.com.cn/s/blog_6d5560f00102vax6.html Quartus II 中的文本编辑软件不好用,比较习惯与UE(Uedit32/ultra ...

  5. http://blog.sina.com.cn/s/blog_5f103c9c0101atny.html

    http://blog.sina.com.cn/s/blog_5f103c9c0101atny.html http://www.oschina.net/question/117304_51525

  6. http://blog.sina.com.cn/s/blog_6940cab30101hn9j.html

    http://blog.sina.com.cn/s/blog_6940cab30101hn9j.html

  7. http://blog.sina.com.cn/s/blog_705cc5dd01012ehb.html

    http://blog.sina.com.cn/s/blog_705cc5dd01012ehb.html

  8. 新浪博客地址 http://blog.sina.com.cn/u/2145079955

    原来 新浪博客地址 http://blog.sina.com.cn/u/2145079955

  9. http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html

    http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html

随机推荐

  1. [转] Java快速教程

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Java是面向对象语言.这门语言其实相当年轻,于1995年才出现,由Sun公司出品 ...

  2. session绑定javaBean

    1.HttpSessionBindingListener   这个监听器,可以让javaBean对象,感知它被绑定到session中或从session中移除.2.HttpSessionActivati ...

  3. codevs 1689 搭建高塔

    /*机智sort二维转一维*/ #include<iostream> #include<cstdio> #include<cstring> #include< ...

  4. 转载:浅析C#深拷贝与浅拷贝

    原文地址 :http://www.cnblogs.com/xugang/archive/2010/09/09/1822555.html   感谢博主分享! 也许会有人这样解释C# 中浅拷贝与深拷贝区别 ...

  5. phpmyadmin安装出错,缺少 mysqli 扩展。请检查 PHP 配置

    下载了个phpmyadmin最新版本的,始终显示这样的内容,求助.如何解决哈?>缺少 mysqli 扩展.请检查 PHP 配置. <a href="Documentation.h ...

  6. css控制文字长度,超出长度显示...

    css控制文字长度,超出长度显示... .style { max-width: 165px; overflow: hidden; white-space: nowrap; text-overflow: ...

  7. cocos2d-x 获取当前播放第几帧最高效的方法

    前言 把互联网翻了个遍, 所有的方法都千篇一律. 用循环去判断! 很神奇的是, 几乎所有博文举的例子, 连数字都是一样的. 这么一个效率烂成渣的方法, 居然被普遍赞同. 以下是广为流传的方法. ; i ...

  8. JavaScript的“闭包”到底是什么

    在JavaScripot函数闭包的定义中,一般都有一个outer 函数,一个inner函数.那么“闭包”到底是指outer函数呢,还是指inner函数? 从官方定义来看,并不清楚:A closure  ...

  9. MySQL存储过程带in和out参数

    MySQL存储过程带in和out参数 最简单的例子: [html] mysql> DELIMITER $$ mysql> USE test $$ Database changed mysq ...

  10. Java简介(4)-关键字

    abstract assert boolean break byte byte case catch char class const continue default do-while double ...