C++ Multimap

C++ Multimap

       因为所看书中涉及到multimap的一些知识点,但是还没有学到,所以总结了网上的文章,帮助自己理解程序。

特点

Map:一对一;有序( 自动按 key 升序 );可用 [ ] 赋值和取值;采用 红黑树 结构;实现O(lgn)的查找,插入和删除。
Mulitimap:多对多;有序( 自动按 key 升序 );无[ ] 操作;可自定义排序函数;采用 红黑树 结构。
multimap<char, int, less< char> >
less< char>为默认函数,较小的放在前面 ,即升序排序。
multimap<char, int, greater< char> >
greater< char> 为系统函数 ,较大的放在前面, 即降序排序,可传入自定义排序函数。

使用

#include <map>
#include <iostream>
using namespace std;

int main(int argc, char** argv) {
	multimap<int, string> multimap1;
	multimap1.insert(multimap<int, string>::value_type(1, "One"));
	multimap1.insert(multimap<int, string>::value_type(1, "One"));
	multimap1.insert(multimap<int, string>::value_type(2, "Two"));
	multimap1.insert(pair<int, string>(1, "Test1"));
	multimap1.insert(pair<int, string>(2, "Test2"));
	multimap1.insert(make_pair<int, string>(3, "Test3"));
	cout << "multimap size:" << multimap1.size() << endl;
	
	multimap<int, string>::const_iterator multimap_iter;
	for (multimap_iter = multimap1.begin(); multimap_iter != multimap1.end(); ++multimap_iter)
	{
		cout << "key:" << multimap_iter->first << " value:" << multimap_iter->second.c_str() << endl;
	}
}	

/*运行结果:
	multimap size:6
	key:1 value:One
	key:1 value:One
	key:1 value:Test1
	key:2 value:Two
	key:2 value:Test2
	key:3 value:Test3
*/

说明1:
    map容器的迭代器里面有个first 和 second。例如:

 map<string, int> m;
 m["one"] = 1;
 map<string, int>::iterator p = m.begin();

    p->first; // 这个是 string 值是 “one”
    p->second; //这个是 int 值是 1


说明2:
       每个STL中的类都有value_type,通俗的说value_type 就是STL容器盛装的数据的数据类型,例如:

vector vec;
vector::value_type x;

       上述两句代码,第一句是声明一个盛装数据类型是int的数据的vector,第二句是使用vector::value_type定义一个变量x,这个变量x实际上是int类型的,因为vector::value_type中声明的为int型。


参考文章: c++ map、multimap 的使用方法
                  c++ map multimap操作

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值