Think Distributed

Database and Distributed Systems

c++

union と Placement new で ADT を定義する

c++

C++ には Placement new という機能があって、簡単に言えば、事前に確保されているメモリ領域に新たに生成されたオブジェクトを埋め込む機能です。私は Placement New の使い道にあまり詳しくないですが、1 つ有用なパターンがあるので紹介します。 よく関数…

Hash function of std::vector<std::string> for std::unordered_map

c++

C++ で std::unordered_map のキーに自作クラスを与えるには std::hash 関数の特殊化をする必要があります。 本稿では std::vector<std::string> を内部で保持しているクラスの hash function の作り方について説明します。 例えば以下のクラスを std::unordered_map のキ</std::string>…