最終更新日時:
が更新

履歴 編集

class template
<filesystem>

std::hash(C++23)

namespace std {
  template <>
  struct hash<std::filesystem::path>;
}

概要

std::hashクラスの、std::filesystem::pathに対する特殊化。パスの内容からハッシュ値を計算し、pathunordered_mapunordered_setのキーとして使用できるようにする。

この特殊化はC++23で追加された。それ以前は定義されておらず、hash<path>は使用できなかった。

効果

pを型pathのオブジェクトとするとき、hash<path>()(p)hash_value(p)と同じ値を返す。

したがって、2つのパスp1p2についてp1 == p2であれば、hash<path>()(p1) == hash<path>()(p2)となる。

#include <cassert>
#include <filesystem>
#include <functional>

namespace fs = std::filesystem;

int main()
{
  fs::path p = "a/b/c";

  // パスの内容からハッシュ値を計算する
  std::size_t h = std::hash<fs::path>{}(p);

  // hash_valueと同じ値になる
  assert(h == fs::hash_value(p));
}

出力

バージョン

言語

  • C++23

関連項目

参照