Map 是 c++ 的一个标准容器, 她提供了很好一对一的关系, 在一些程序中建立一个 map 可以起到事半功倍的效果, 总结了一些 map 基本简单实用的操作!
1. map 最基本的构造函数;
- map<string , int>mapstring; map<int ,string>mapint;
- map<sring, char>mapstring; map<char ,string>mapchar;
- map<char ,int>mapchar; map<int ,char>mapint;
2. map 添加数据;
- map<int ,string> maplive;
- 1.maplive.insert(pair<int,string>(102,"aclive"));
- 2.maplive.insert(map<int,string>::value_type(321,"hai"));
- 3, maplive[112]="April";//map 中最简单最常用的插入添加!
3,map 中元素的查找:
find() 函数返回一个迭代器指向键值为 key 的元素, 如果没找到就返回指向 map 尾部的迭代器
- map<int ,string>::iterator l_it;;
- l_it=maplive.find(112);
- 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(112);
- 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> ( 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 的函数
来源: http://www.bubuko.com/infodetail-2545184.html