Skip to content

Latest commit

 

History

History
66 lines (47 loc) · 1.78 KB

File metadata and controls

66 lines (47 loc) · 1.78 KB

hash

  • filesystem[meta header]
  • std[meta namespace]
  • class template[meta id-type]
  • cpp23[meta cpp]
namespace std {
  template <>
  struct hash<std::filesystem::path>;
}
  • hash[link /reference/functional/hash.md]

概要

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));
}
  • std::hash[color ff0000]
  • fs::hash_value[link hash_value.md]

出力

バージョン

言語

  • C++23

関連項目

参照