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. MyEclipse 安装SVN插件方法及插件下载地址

    直接解压法 下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240下载SVN插件:site-1.x.x. ...

  2. Windows 2008 server R2安装.NET Framework4时提示“灾难性故障”解决

    在安装行环境.NET Framework 4时无法安装,提示“灾难性故障”.服务器的操作系统是windows  server 2008 R2. 查看系统日志时显示“无法安装 Windows 更新 &q ...

  3. (转)ECSHOP给分类添加代表图

    转之--http://www.cnblogs.com/wangblognet/archive/2012/12/09/2809916.html ecshop的模板有很多不完善的地方,比如添加商品分类的时 ...

  4. 简单实现图片间的切换动画 主要用到ViewPager

    简单实现图片间的切换动画 主要用到ViewPagerViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view.ViewPager类需要一个PagerAdapter适 ...

  5. c# 使用递归 循环遍历导航树结构 并解析

    1.数据书库结构 1 家用电器 0 一级菜单 2 手机.数码.京东通信 0 一级菜单 3 电脑.办公 0 一级菜单 4 家具.家居.厨房 0 一级菜单 5 男装.女装.童装.内衣 0 一级菜单 6 个 ...

  6. 用XMPP实现完整Android聊天项目

    简介 这是一个完整的xmpp的Android的项目服务端使用openfire3.9.3客户端使用Android4.2.2 集成第三方:百度地图sdkasmack.jaruniversal-image- ...

  7. AFNetworking使用详解

    导语: 众所周知,AFNetworking是目前IOS开发中非常受欢迎的第三方网络通信类库,同时AFNetworking对苹果官方NSURLConnection和NSURLSession进行了封装,使 ...

  8. Swift - 31 - 常量参数, 变量参数和inout参数

    //: Playground - noun: a place where people can play import UIKit // swift中默认情况下, 传入的参数是不可以修改的, 也就是l ...

  9. java 懒汉式--初步解决安全问题

    2016-07-28 00:10:14 懒汉式: class text { public String k;       private static text t=null;//右边代码结构比上边饿 ...

  10. cas sso单点登录系列7_ 单点登录cas常见问题系列汇总

    转:http://blog.csdn.net/matthewei6/article/details/50709252 单点登录cas常见问题(一) - 子系统是否还要做session处理?单点登录ca ...