ostringstreamのマップまたはunordered_mapを使用することはできますか?それはいかに効率的ですか? 「id」でストリームを生成したい:ostringstreamのハッシュマップ?
my_logs["info"] << "stuff"
my_logs["info"] << "stuff"
my_logs["debug"] << "stuff"
ostringstreamのマップまたはunordered_mapを使用することはできますか?それはいかに効率的ですか? 「id」でストリームを生成したい:ostringstreamのハッシュマップ?
my_logs["info"] << "stuff"
my_logs["info"] << "stuff"
my_logs["debug"] << "stuff"
はい。 mapped_type
のstd::map
でもstd::unordered_map
でもoperator[]
のところに置かなければならないという唯一の要件は、DefaultConstructibleであるということです。 std::ostringstream
はDefaultConstructibleなので、これは完全に有効なコードです。
地図の検索と同じくらい効率的です。これは、プログラムの残りの部分で十分です。 ostringstream
でログを記録している場合、追加のマップ参照が残りのログに対して重要になるかどうかは疑問です。しかし、それが問題であれば、代わりに参照を保持することができます:
auto&& log_info = my_logs["info"];
// ...
log_info << blah;
参照を使用してください。参照はいずれのマップでも無効になりません(後続のログを消去しない限り)。
http://coliru.stacked-crooked.com/a/36bacb3a03e1be81 – vinnylinux
簡単な質問:どのように私のバッファに残っているのを検出できますか? – vinnylinux
@vinnyあなたはまだすべての 'include'sが必要です... – Barry
はい。しかし、my_logs(foo)を使用する方が柔軟性があります(他のコードを変更せずにmy_logsのタイプを変更できるため)。 –