ostringstream的Hashmap?

时间:2016-05-11 20:56:52

标签: c++

是否可以使用ostringstream的map或unordered_map?效率如何?我想通过“id”填充流:

my_logs["info"] << "stuff"
my_logs["info"] << "stuff"
my_logs["debug"] << "stuff"

1 个答案:

答案 0 :(得分:3)

是。 std::map std::unordered_map operator[]mapped_type的唯一要求是它是DefaultConstructible。由于std::ostringstream是DefaultConstructible - 这是完全有效的代码。

它与地图查找一样高效 - 这是否足够有效取决于您的程序的其余部分。如果您通过ostringstream记录内容,我怀疑额外的地图查找对其余日志记录是否重要。但是,如果它是一个问题,你可以简单地保留引用:

auto&& log_info = my_logs["info"];
// ...

log_info << blah;

并使用参考文献。任何一个映射都不会使引用无效(除非您删除后续日志)。