C++11時代はタプル操作なのでtuple版for_eachとstd::hash<tuple>
C++11時代はtuple操作がいろいろイケメンだと女の子にモテモテだと聞いて
tupleって抽象化された構造体だよねー
struct Printer
{
template<class T>
void operator()(const T&x)
{
std::cout << x;
}
};
int main()
{
using namespace tuple_helper;
auto x=std::make_tuple(3,"absd",15);
tuple_foreach(x,Printer()); //3absd15
};
operator()(T)を実装したビジター(これだとPrinter)が必要になる
どうにもビジターがローカルクラスで作れないのが難点だが一々tuple総舐めする関数書くより楽
これを使ってtupleのハッシュも作ってみた
using namespace tuple_helper;
typedef std::tuple<int, std::string, int> Tuple;
Tuple x(3, "absd", 15);
Tuple y(4, "dddd", 30);
std::unordered_set<Tuple> set;
set.insert(x);
std::cout << (set.find(x) != set.end()) << (set.find(y) != set.end());
分りずらいけどstd::hash<tuple<>>が別ファイルで特殊化されている
unorderd_setが動くぞ!!unorderd_mapも動くぞ!!