最終更新日時(UTC):
が更新

履歴 編集

function template
<unordered_map>

std::operator!=(C++11)

namespace std {
  // operator==により、以下の演算子が使用可能になる (C++20)
  template <class Key, class T, class Hash, class Pred, class Alloc>
  bool operator!=(const unordered_map<Key,T,Hash,Pred,Alloc>& a,
                  const unordered_map<Key,T,Hash,Pred,Alloc>& b); // (1) C++11
}

概要

unordered_map オブジェクトを非等値比較する。

要件

  • a.key_eq()b.key_eq() は同じふるまいをすること。
  • key_type の等値比較演算子(operator==)で等値と判定された 2 つのオブジェクトは、key_eq() でも等値と判定されること。

戻り値

以下と等価:

return !(a == b);

例外

投げない。

計算量

  • 平均: size() に対して線形時間
  • 最悪: size() に対して二乗時間

備考

  • 本関数は、コンテナ内の要素の比較に key_eq() で返されるキー比較用関数オブジェクトを使用しないことに注意。
  • 本関数は、標準コンテナの要件を満たさない。これは、標準コンテナの要件では operator!=iteratorstd::equal を用いて定義されているためである。しかし、本関数の戻り値は、両方のコンテナが同じ要素を保持しているという意味においては、標準コンテナと同様とも考えることができる。

#include <iostream>
#include <unordered_map>

int main()
{
  std::unordered_map<int,char> um1;
  um1[0] = 'a';

  auto um2 = um1;

  std::cout << (um1 != um2) << std::endl;

  um2[0] = 'b';

  std::cout << (um1 != um2) << std::endl;

  return 0;
}

出力

0
1

処理系

参照