普段は C でコーディングしていますが、現在は C++ に移行しています。私はstd::unordered_map6000万のエントリを持っています。一度だけロードされ、後で変更されることはありません。時々いくつかの関数に渡したいと思います。しかし、このコードは毎回ハッシュ マップをコピーします。
typedef unordered_map<uint64_t, mer*> mer_map;
void test_pass_by_ref3(mer_map kmers) {
}
void test_pass_by_ref2(mer_map kmers) {
test_pass_by_ref3(kmers);
}
void test_pass_by_ref(mer_map kmers) {
test_pass_by_ref2(kmers);
}
のみを渡したい場合はpointer、それを渡し、通常どおりクエリする方法: value = mer_map[key]? passing by reference構文を検索して見つけました:
void foo(const ClassName &name)
{
ClassName& temp = const_cast<ClassName&>(name);
... ....
}
しかし、コンパイルできないようです。助けてください。ありがとう。