Chapter 17.关联容器multimap

multimap简介
与map类似,但是允许不同的mapped_value拥有相同的key_value,实际应用,一个人拥有多个QQ、邮箱、电话号码等
与map的区别在于,insert()一定会插入值;erase(element_value)即version 1,会删除所有相同元素值的元素
multimap模板
template < class Key, class T, class Compare = less<Key>,
           class Allocator = allocator<pair<const Key,T> > > class multimap;

Member functions

(constructor)Construct multiset 
(destructor)Multiset destructor
operator=Copy container content
constructor
1.explicit multimap ( const Compare& comp = Compare(),
               const Allocator& = Allocator() );
2.template <class InputIterator>
  multimap ( InputIterator first, InputIterator last,
        const Compare& comp = Compare(), const Allocator& = Allocator() );
3.multimap ( const multimap<Key,T,Compare,Allocator>& x );

eg:
	multimap<char,int> first;
	first.insert(pair<char,int>('a',10));
	first.insert(pair<char,int>('b',15));
	first.insert(pair<char,int>('b',20));
	first.insert(pair<char,int>('c',25));
	multimap<char,int> second (first.begin(),first.end());
Iterators:

beginReturn iterator to beginning
endReturn iterator to end
rbeginReturn reverse iterator to reverse beginning
rendReturn reverse iterator to reverse end
Capacity:
emptyTest whether container is empty
sizeReturn container size
max_sizeReturn maximum size
Modifiers:
insertInsert element 
eraseErase elements
swapSwap content
clearClear content
insert
1.iterator insert ( const value_type& x );
2.iterator insert ( iterator position, const value_type& x );
3.template <class InputIterator>
   void insert ( InputIterator first, InputIterator last );

eg:
	mymultimap.insert(pair<char,int>('a',10));
	mymultimap.insert(pair<char,int>('b',121));
	mymultimap.insert(pair<char,int>('c',1001));
	mymultimap.insert(pair<char,int>('c',2002));//same key_value
	mymultimap.insert(pair<char,int>('d',11011));
	mymultimap.insert(pair<char,int>('e',44));
erase
1.void erase ( iterator position );
2.size_type erase ( const key_type& x );// returns the number of elements erased
3.void erase ( iterator first, iterator last );

Observers:
key_compReturn comparison object
value_compReturn comparison object
//omit them
Operations:
findGet iterator to element
countCount elements with a specific key//return element appear times
lower_boundReturn iterator to lower bound
upper_boundReturn iterator to upper bound
equal_rangeGet range of equal elements
eg:
//lower_bound & upper_bound
itlow=mymultimap.lower_bound ('b');  // >='b'
itup=mymultimap.upper_bound ('d');   // >'d'
for ( it=itlow ; it != itup; it++ )
cout << (*it).first << " => " << (*it).second << endl;

//equal_range
pair<multimap<char,int>::iterator,multimap<char,int>::iterator> ret;
for (char ch='a'; ch<='d'; ch++)
{
cout << ch << " =>";
ret = mymm.equal_range(ch);
for (it=ret.first; it!=ret.second; ++it)
  cout << " " << (*it).second;
cout << endl;
}
Allocator:
get_allocator

//same as before like list etc. omit it
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值