std::multimap::equal_range
STD::Multimap::EQUAL[医]范围
std::pair | (1) | |
---|---|---|
std::pair<const_iterator,const_iterator> equal_range( const Key& key ) const; | (2) | |
template< class K > std::pair<iterator,iterator> equal_range( const K& x | (3) | (since C++14) |
template< class K > std::pair<const_iterator,const_iterator> equal_range( const K& x ) const; | (4) | (since C++14) |
返回包含容器中具有给定键的所有元素的范围。范围由两个迭代器定义,一个指向第一个元素,即不折不扣
比key
另一个指向第一个元素更大
比key
或者,第一个迭代器可以用lower_bound()
,第二个upper_bound()
...
1,2%29将密钥与key
...
3,4%29将键与值进行比较。x
。此重载仅在下列情况下才参与重载解析:Compare::is_transparent
是有效的,并表示类型。它们允许调用此函数,而无需构造Key
...
参数
key | - | key value to compare the elements to |
---|---|---|
x | - | alternative value that can be compared to Key |
返回值
std::pair
包含一对迭代器,定义想要的范围:第一个指向第一个元素,而不是再少点
比key
第二个指向第一个元素更大
比key
...
如果没有元素不折不扣
比key
,超过-结束%28见end()
%29迭代器作为第一个元素返回。类似地,如果没有元素更大
比key
,则返回作为第二个元素的过去-结束迭代器。
Since insert always inserts at the upper bound, the order of equivalent elements in the equal range is the order of insertion. | (since C++11) |
---|
复杂性
容器大小的对数。
例
二次
#include <iostream>
#include <map>
int main()
{
std::multimap<int, char> dict {
{1, 'A'},
{2, 'B'},
{2, 'C'},
{2, 'D'},
{4, 'E'},
{3, 'F'}
};
auto range = dict.equal_range(2
for (auto i = range.first; i != range.second; ++i)
{
std::cout << i->first << ": " << i->second << '\n';
}
}
二次
产出:
二次
2: B
2: C
2: D
二次
另见
find | finds element with specific key (public member function) |
---|---|
upper_bound | returns an iterator to the first element greater than the given key (public member function) |
lower_bound | returns an iterator to the first element not less than the given key (public member function) |
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。
http://en.cppreference.com/w/cpp/container/Multimap/EQUAL[医]范围