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

履歴 編集

function
<memory>

std::shared_ptr::owner_hash(C++26)

size_t owner_hash() const noexcept; // (1) C++26

概要

所有権ベースでのハッシュ値を取得する。

戻り値

所有権が等価な(owner_equal()trueを返す)shared_ptrおよびweak_ptrオブジェクトに対して、同じハッシュ値を返す。

備考

この関数は、所有権ベースでのハッシュを提供する。std::hash<shared_ptr<T>>が保持するポインタの値をもとにしたハッシュを提供するのに対し、owner_hash()は所有権(参照カウンタオブジェクト)をもとにしたハッシュを提供する。

これにより、owner_equalと組み合わせて、shared_ptrweak_ptrunordered_mapunordered_setのキーとして使用できる。

#include <iostream>
#include <memory>

int main()
{
  std::shared_ptr<int> org(new int(42));

  // 別名コンストラクタで異なるポインタを指すが、所有権は同じ
  std::shared_ptr<int> alias(org, org.get());

  std::cout << std::boolalpha;
  std::cout << (org.owner_hash() == alias.owner_hash()) << std::endl;
}

出力

true

バージョン

言語

  • C++26

処理系

関連項目

参照