- unordered_map[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <class Key, class T, class Hash, class Pred, class Alloc>
bool operator== (const unordered_multimap<Key,T,Hash,Pred,Alloc>& a,
const unordered_multimap<Key,T,Hash,Pred,Alloc>& b);
}unordered_multimap オブジェクトを等値比較する。
a.key_eq()とb.key_eq()は同じふるまいをすること。key_typeの等値比較演算子(operator==)で等値と判定された 2 つのオブジェクトは、key_eq()でも等値と判定されること。
以下の両方を満たす場合 true、そうでない場合 false。
a.size() == b.size()である。- 一方のコンテナの全ての要素が、他方のコンテナにも存在する。ここで、存在するとは、
key_typeの等値比較演算子(operator==)で等値と判定されるということである。
投げない。
Ei を a の i 番目の同値キーのグループの大きさ、n = a.size()であるとして、
- 平均: O(Σ(Ei2))
- 最悪: O(n2)
- 本関数は、コンテナ内の要素の比較に
key_eq()で返されるキー比較用関数オブジェクトを使用しないことに注意。 - 本関数は、標準コンテナの要件を満たさない。これは、標準コンテナの要件では
operator!=がiteratorとstd::equalを用いて定義されているためである。しかし、本関数の戻り値は、両方のコンテナが同じ要素を保持しているという意味においては、標準コンテナと同様とも考えることができる。
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_multimap<int,char> um1;
um1.insert(std::make_pair(10,'a'));
um1.insert(std::make_pair(20,'b'));
um1.insert(std::make_pair(30,'c'));
um1.insert(std::make_pair(30,'d'));
std::unordered_multimap<int,char> um2;
um2.insert(std::make_pair(30,'c'));
um2.insert(std::make_pair(10,'a'));
um2.insert(std::make_pair(30,'d'));
um2.insert(std::make_pair(20,'b'));
std::cout << (um1 == um2) << std::endl;
um2.insert(std::make_pair(30,'e'));
std::cout << (um1 == um2) << std::endl;
return 0;
}- insert[link insert.md]
1
0
- Clang: ??
- GCC: ??
- GCC, C++11 mode: ??
- ICC: ??
- Visual C++: 2012