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

履歴 編集

function template
<vector>

std::operator==

namespace std {
  template <class T, class Allocator>
  bool operator==(const vector<T, Allocator>& x,
                  const vector<T, Allocator>& y);           // (1) C++03

  template <class T, class Allocator>
  constexpr bool operator==(const vector<T, Allocator>& x,
                            const vector<T, Allocator>& y); // (1) C++20
}

概要

vectorオブジェクトの等値比較を行う。

要件

T==で比較可能であること。

効果

戻り値

xyの要素数および要素の値が等しければtrue、そうでなければfalseを返す。

計算量

線形時間。ただし、xyのサイズが異なる場合は定数時間。

備考

  • この演算子により、以下の演算子が使用可能になる (C++20):
    • operator!=

基本的な使い方 (C++11)

#include <iostream>
#include <vector>

int main()
{
  std::vector<int> v1 = {1, 2, 3};
  std::vector<int> v2 = {1, 2, 3};
  std::vector<int> v3 = {1, 2, 3, 4};

  std::cout << std::boolalpha;

  // 要素数と要素の値が等しい
  std::cout << (v1 == v2) << std::endl;

  // 要素の値は(左辺の要素数分まで)等しいが要素数が異なる
  std::cout << (v1 == v3) << std::endl;
}

出力

true
false

基本的な使い方 (C++20 constexpr)

#include <cassert>
#include <vector>

constexpr bool f()
{
  std::vector<int> v1 = {1, 2, 3};
  std::vector<int> v2 = {1, 2, 3};
  std::vector<int> v3 = {1, 2, 3, 4};

  // 要素数と要素の値が等しい
  assert(v1 == v2);

  // 要素の値は(左辺の要素数分まで)等しいが要素数が異なる
  assert(!(v1 == v3));

  return true;
}

int main()
{
  static_assert(f());
}

出力

参照