类别: 容器 | 组件类型: 类型 |
多重映射。它也是一个 多重关联容器,这意味着对具有相同键的元素数量没有限制。的对象关联起来。具有一个重要的特性,即在的对象关联起来。中插入新元素不会使指向现有元素的迭代器失效。从
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*或类型为.