| 类别: 容器 | 组件类型: 类型 |
多重映射。它也是一个 多重关联容器,这意味着对具有相同键的元素数量没有限制。的对象关联起来。具有一个重要的特性,即在的对象关联起来。中插入新元素不会使指向现有元素的迭代器失效。从
struct ltstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) < 0;
}
};
int main()
{
multimap<const char*, int, ltstr> m;
m.insert(pair<const char* const, int>("a", 1));
m.insert(pair<const char* const, int>("c", 2));
m.insert(pair<const char* const, int>("b", 3));
m.insert(pair<const char* const, int>("b", 4));
m.insert(pair<const char* const, int>("a", 5));
m.insert(pair<const char* const, int>("b", 6));
cout << "Number of elements with key a: " << m.count("a") << endl;
cout << "Number of elements with key b: " << m.count("b") << endl;
cout << "Number of elements with key c: " << m.count("c") << endl;
cout << "Elements in m: " << endl;
for (multimap<const char*, int, ltstr>::iterator it = m.begin();
it != m.end();
++it)
cout << " [" << (*it).first << ", " << (*it).second << "]" << endl;
}
| 模板参数 | 描述 | 参数 |
|---|---|---|
| Key | 默认值多重映射的键类型。这也定义为. | |
| Data | multimap::key_type多重映射的数据类型。这也定义为. | |
| multimap::data_type | Compare键比较函数,一个 严格弱排序,其参数类型为key_type;如果其第一个参数小于第二个参数,则返回true,否则返回false。这也定义为. | multimap::key_compare |
| less<Key> | Alloc的对象关联起来。的分配器,用于所有内部内存管理。 | alloc |
| 成员 | 定义位置 | 描述 |
|---|---|---|
| 键比较函数,一个 严格弱排序,其参数类型为 | 关联容器 | Alloc的对象关联起来。的键类型,Key. |
| data_type | 成对关联容器 | 与键关联的对象类型。 |
| value_type | 成对关联容器 | 对象类型,pair<const key_type, data_type>,存储在多重映射中。 |
| key_compare | 排序关联容器 | 函数对象,用于比较两个键以进行排序。 |
| value_compare | 排序关联容器 | 函数对象,用于比较两个值以进行排序。 |
| pointer | 容器 | 指向T. |
| reference | 容器 | 指向T |
| const_reference | 容器 | 指向T |
| size_type | 容器 | 无符号整型。 |
| difference_type | 容器 | 带符号整型。 |
| iterator | 容器 | 用于遍历的对象关联起来。. [1] |
| const_iterator | 容器 | 用于遍历的对象关联起来。. |
| reverse_iterator | 可逆容器 | 用于反向遍历的对象关联起来。. [1] |
| const_reverse_iterator | 可逆容器 | 用于反向遍历的对象关联起来。. |
| iterator begin() | 容器 | 返回指向iterator开头的的对象关联起来。. |
| iterator end() | 容器 | 返回指向iterator返回指向的对象关联起来。. |
| const_iterator begin() const | 容器 | 返回指向const_iterator开头的的对象关联起来。. |
| const_iterator end() const | 容器 | 返回指向const_iterator返回指向的对象关联起来。. |
| reverse_iterator rbegin() | 可逆容器 | 返回指向reverse_iterator返回指向反向多重映射开头的 |
| reverse_iterator rend() | 可逆容器 | 返回指向reverse_iterator返回指向反向多重映射末尾的 |
| const_reverse_iterator rbegin() const | 可逆容器 | 返回指向const_reverse_iterator返回指向反向多重映射开头的 |
| const_reverse_iterator rend() const | 可逆容器 | 返回指向const_reverse_iterator返回指向反向多重映射末尾的 |
| size_type size() const | 容器 | 返回的对象关联起来。. |
| size_type max_size() const | 容器 | 返回的对象关联起来。. |
| bool empty() const | 容器 | ;如果其第一个参数小于第二个参数,则返回如果的对象关联起来。的大小为0. |
| key_compare key_comp() const | 排序关联容器 | 返回key_compare对象,该对象由的对象关联起来。. |
| value_compare value_comp() const | 排序关联容器 | 返回value_compare对象,该对象由的对象关联起来。. |
| multimap() | 容器 | 创建一个空的的对象关联起来。. |
| multimap(const key_compare& comp) | 排序关联容器 | 创建一个空的的对象关联起来。,使用comp作为key_compare对象。 |
template <class InputIterator> multimap(InputIterator f, InputIterator l) [2] |
多重排序关联容器 | 创建一个包含范围副本的多重映射。 |
template <class InputIterator> multimap(InputIterator f, InputIterator l, const key_compare& comp) [2] |
多重排序关联容器 | 创建一个包含范围副本的多重映射,使用comp作为key_compare对象。 |
| multimap(const multimap&) | 容器 | 复制构造函数。 |
| multimap& operator=(const multimap&) | 容器 | 赋值运算符 |
| void swap(multimap&) | 容器 | 交换两个多重映射的内容。 |
| iterator insert(const value_type& x) | 多重关联容器 | 将x插入的对象关联起来。. |
iterator insert(iterator pos,
const value_type& x)
|
多重排序关联容器 | 将x插入的对象关联起来。,使用pos作为它将被插入位置的提示。 |
template <class InputIterator> void insert(InputIterator, InputIterator) [2] |
多重排序关联容器 | 将范围插入的对象关联起来。. |
| void erase(iterator pos) | 关联容器 | 删除pos. |
| size_type erase(const key_type& k) | 关联容器 | 删除键为k. |
| 的元素。 | 关联容器 | void erase(iterator first, iterator last) |
| 删除范围内的所有元素。 | 关联容器 | void clear() |
| 删除所有元素。 | 关联容器 | iterator find(const key_type& k)k. |
| 查找键为 | 关联容器 | iterator find(const key_type& k)k. |
| const_iterator find(const key_type& k) const | 关联容器 | size_type count(const key_type& k)k. |
| 计算键为 | 排序关联容器 | iterator lower_bound(const key_type& k)k. |
| 查找键不小于 | 排序关联容器 | iterator lower_bound(const key_type& k)k. |
| const_iterator lower_bound(const key_type& k) const | 排序关联容器 | iterator upper_bound(const key_type& k)k. |
| 查找键大于 | 排序关联容器 | iterator upper_bound(const key_type& k)k. |
pair<iterator, iterator> equal_range(const key_type& k) |
排序关联容器 | const_iterator upper_bound(const key_type& k) constk. |
pair<const_iterator, const_iterator> equal_range(const key_type& k) const |
排序关联容器 | const_iterator upper_bound(const key_type& k) constk. |
bool operator==(const multimap&,
const multimap&)
|
查找包含所有键为 | Forward Container |
bool operator<(const multimap&,
const multimap&)
|
查找包含所有键为 | 测试两个多重映射是否相等。这是一个全局函数,而不是成员函数。 |
[1] 说明Multimap::iterator不是可变迭代器,因为multimap::value_type不是 可赋值。也就是说,如果i是类型为multimap::iterator并且i不是可变迭代器,因为p,则*i = p是类型为不是有效表达式。但是,也不是常量迭代器,因为它可以用来修改它所指向的对象。使用上面相同的符号,(*i).second = p是一个有效的表达式。同一点适用于.
multimap::reverse_iterator[2] 此成员函数依赖于成员模板函数,目前(1998 年初)并非所有编译器都支持这些函数。如果您的编译器支持成员模板,则可以使用任何类型的 输入迭代器 调用此函数。但是,如果您的编译器尚未支持成员模板,则参数必须是类型为const value_type*或类型为.