class Demo {
struct FileData {
int size;
BYTE* buffer;
DWORD flags;
};
typedef std::tr1::unordered_map<std::wstring,FileData> FileMap;
FileMap m_fileMap;
void myFunc()
{
std::wstring name = L"TestFile.png";
FileMap::const_iterator iter = m_fileMap.find(name);
std::cout << iter->first;
}
};
上記のコードを見てください。私の問題は、FileMap :: const_iteratorがどのように機能するかです。 キー(std :: wstring)と値(FileData)のコピーを作成しますか?それとも、ポインタとキーと値の参照だけを保持しているのでしょうか?C++ STL unordered_mapイテレータ問題
まあ、実際に私はそれがどのように機能するかについてだけ興味がありました。したがって、 'std :: tr1 :: unordered_map fileMap; 'を使うことは、キーと値のコピーを作成しないので効率的です。 –
MorrisLiang
あなたはそれについて多く考えるべきではありません。コンパイラは多くのコピーを最適化します。だから、コピーを避けようとすると、多くの場合複雑なコードが発生し、コンパイラが失われて最適化されないため、おそらく遅くなります。 –