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. html.day01

    1.web标准: 1. 结构  (xhtml)  2. 表现(css)  3.行为(js) html   超文本标记语言 xhtml  (严格型超文本标记语言) 2.规范: 1. 所有标签(标记)都要 ...

  2. Spring—请求映射之URL路径映射

    Spring2.5引入注解式处理器支持,通过@Controller 和 @RequestMapping注解定义我们的处理器类.并且提供了一组强大的注解:需要通过处理器映射DefaultAnnotati ...

  3. 设置cookie倒计时让让表单自动提交

    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%&g ...

  4. asp.net中Request.ServerVariables的用法

    在asp.net中可以通过HttpRequest.ServerVariables 属性来获取“ Web 服务器变量的集合” HttpRequest.ServerVariables 的用法: HttpR ...

  5. html5 高清屏幕图片处理

    1. srcset 语法:在元素上添加srcset属性.srcset的值是一个用逗号分隔的列表.列表中的每个项包含一张图片的路径并且按倍数(例如,1x,2x,3x...)提供多张分辨率的图片 参考:h ...

  6. window连接linux nfs服务器 —— 网络错误 53

    在度娘以"win7 nfs mount 网络错误 - 53"为关键字,翻了第一页,GG... 于是去找谷哥,第一页 [all variants] Get NFS working w ...

  7. Asp.net MVC 与 Asp.net Web API 区别

    Asp.Net Web API VS Asp.Net MVC 1.Asp.net MVC 是用来创建返回视图(Views)与数据的Web应用,而Asp.net Web API是一种简单轻松地成熟的HT ...

  8. Ajax.BeginForm 防止跳转到新页面

    @using (Ajax.BeginForm("ChangeCompanyId", "navigation", new { area = "confi ...

  9. sql 汉字转首字母拼音

    从网络上收刮了一些,以备后用 create function fun_getPY(@str nvarchar()) returns nvarchar() as begin declare @word ...

  10. Llinux-apache安装

    第四章  构建LAMP网站服务平台 实验报告 1.安装apache服务器软件及相关组件 查看系统中是否安装apache服务相关的软件包: [root@www /]# rpm -qa | grep ht ...