C++ 标准模板库STL multimap 使用方法与应用介绍(一)

示例程序如下 实现字典功能:

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

int main()
{
    // define multimap type as string/string dictionary
    typedef multimap<string,string> StrStrMMap;

    // create empty dictionary
    StrStrMMap dict;

    // insert some elements in random order
    dict.insert(make_pair("STL","标准模板库"));
    dict.insert(make_pair("deque","双向队列"));
    dict.insert(make_pair("deque","double ended queue"));
    dict.insert(make_pair("list","双向链表"));
    dict.insert(make_pair("vector","向量"));
    dict.insert(make_pair("Iterator","迭代器"));
    dict.insert(make_pair("stack","堆栈"));
    dict.insert(make_pair("queue","队列"));
    dict.insert(make_pair("string","串"));


    // print all elements
    StrStrMMap::iterator pos;
    cout.setf (ios::left, ios::adjustfield);
    cout << ' ' << setw(10) << " english "<< " 中文 " << endl;
    cout << setfill('-') << setw(20) << ""<< setfill(' ') << endl;
    for (pos = dict.begin(); pos != dict.end(); ++pos)
    {
        cout << ' ' << setw(10) << pos->first.c_str()<< pos->second << endl;
    }
    cout << endl;

    // print all values for key "STL"
    string word("STL");
    cout << word << ": " << endl;
    for (pos = dict.lower_bound(word);pos != dict.upper_bound(word); ++pos)
        {
            cout << "    " << pos->second << endl;
        }

    // print all values for key "STL"
    word="deque";
    cout << word << ": " << endl;
    for (pos = dict.lower_bound(word);pos != dict.upper_bound(word); ++pos)
        {
            cout << "    " << pos->second << endl;
        }
}
/**********************
程序运行结果如下:
  english   中文
--------------------
 Iterator  迭代器
 STL       标准模板库
 deque     双向队列
 deque     double ended queue
 list      双向链表
 queue     队列
 stack     堆栈
 string    串
 vector    向量

STL:
    标准模板库
deque:
    双向队列
    double ended queue

Process returned 0 (0x0)   execution time : 0.795 s
Press any key to continue.

***********************/

C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素。(具体用法请参考map容器)
函数列表:
begin() 返回指向第一个元素的迭代器
clear() 删除所有元素
count() 返回一个元素出现的次数
empty() 如果multimap为空则返回真
end() 返回一个指向multimap末尾的迭代器
equal_range() 返回指向元素的key为指定值的迭代器对
erase() 删除元素
find() 查找元素
get_allocator() 返回multimap的配置器
insert() 插入元素
key_comp() 返回比较key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向mulitmap尾部的逆向迭代器
rend() 返回一个指向multimap头部的逆向迭代器
size() 返回multimap中元素的个数
swap() 交换两个multimaps
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数


构造函数
explicit multimap(const Pred& comp = Pred(), const A& al = A());
multimap(const multimap& x);
multimap(const value_type *first, const value_type *last,
    const Pred& comp = Pred(), const A& al = A());

begin
语法:
  iterator begin();
begin()函数返回一个迭代器,指向multimap的第一个元素。
clear
语法:
  void clear();
clear()函数删除multimap中的所有元素。
count
语法:
  size_type count( const key_type &key );
count()函数返回multimap中键值等于key的元素的个数。
empty
语法:
  bool empty();
empty()函数返回真(true)如果multimap为空,否则返回假(false)。
end
语法:
  iterator end();
end()函数返回一个迭代器,指向multimap的尾部。
equal_range
语法:
  pair equal_range( const key_type &key );
equal_range()函数查找multimap中键值等于key的所有元素,返回指示范围的两个迭代器。
erase
语法:
  void erase( iterator pos );
  void erase( iterator start, iterator end );
  size_type erase( const key_type &key );
erase()函数删除在pos位置的元素,或者删除在start和end之间的元素,或者删除那些值为key的所有元素。
find
语法:
  iterator find( const key_type &key );
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向multimap尾部的迭代器。
get_allocator
语法:
  allocator_type get_allocator();
get_allocator()函数返回multimap的配置器。
insert
语法:
  iterator insert( iterator pos, const TYPE &val );
  void insert( input_iterator start, input_iterator end );
  pair insert( const TYPE &val );
insert()函数:

插入val到pos的后面,然后返回一个指向这个元素的迭代器。
插入start到end的元素到multimap中。
只有在val不存在时插入val。返回值是一个指向被插入元素的迭代器和一个描述是否插入的bool值。
key_comp
语法:
  key_compare key_comp();
key_comp()函数返回一个比较key的函数。
lower_bound
语法:
  iterator lower_bound( const key_type &key );
lower_bound()函数返回一个迭代器,指向multimap中键值>=key的第一个元素。
max_size
语法:
  size_type max_size();
max_size()函数返回multimap能够保存的最大元素个数。
rbegin
语法:
  reverse_iterator rbegin();
rbegin()函数返回一个指向multimap尾部的逆向迭代器。
rend
语法:
  reverse_iterator rend();
rend()函数返回一个指向multimap头部的逆向迭代器。
size
语法:
  size_type size();
size()函数返回multimap中保存的元素个数。
swap
语法:
  void swap( multimap &obj );
swap()交换obj和现mulitmap中的元素。
upper_bound
语法:
  iterator upper_bound( const key_type &key );
upper_bound()函数返回一个迭代器,指向multimap中键值>key的第一个元素。
value_comp
语法:
  value_compare value_comp();
value_comp()函数返回一个比较元素value的函数。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值