C++ map 的用法(转载)

来源:互联网 发布:jquery怎么渲染数据 编辑:程序博客网 时间:2024/06/06 09:21

C++map函数的用法
对map函数的一些整理

C++ map的基本操作和使用

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

1、map简介

map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。

2、map的功能

自动建立Key -value的对应。key 和value可以是任意你需要的类型。

根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。

快速插入Key - Value 记录。

快速删除记录 根据Key 修改value记录。

遍历所有记录。

3、使用map

使用map得包含map类所在的头文件

这里写代码片#include //注意,STL头文件没有扩展名.h

map对象是模板类,需要关键字和存储对象两个模板参数:

std:map

#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> ( 1, 10 ) );     m1.insert ( pair <int, int> ( 2, 20 ) );     m1.insert ( pair <int, int> ( 3, 30 ) );     m2.insert ( pair <int, int> ( 10, 100 ) );     m2.insert ( pair <int, int> ( 20, 200 ) );     m3.insert ( pair <int, int> ( 30, 300 ) );     cout << "The original map m1 is:";     for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )         cout << " " << m1_Iter->second;         cout << "." << endl;        // This is the member function version of swap       //m2 is said to be the argument map; m1 the target map     m1.swap( m2 );    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;     // This is the specialized template version of swap     swap( m1, m3 );     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> ( 1, 20 ) );         m1.insert ( pair <int, int> ( 4, 40 ) );         m1.insert ( pair <int, int> ( 3, 60 ) );         m1.insert ( pair <int, int> ( 2, 50 ) );         m1.insert ( pair <int, int> ( 6, 40 ) );         m1.insert ( pair <int, int> ( 7, 30 ) );         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:

1 20

2 50

3 60

4 40

6 40

7 30

请按任意键继续…

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的函数

2 0
原创粉丝点击