是否可以使用ostringstream的map或unordered_map?效率如何?我想通过“id”填充流:
my_logs["info"] << "stuff"
my_logs["info"] << "stuff"
my_logs["debug"] << "stuff"
答案 0 :(得分:3)
是。 std::map
std::unordered_map
operator[]
对mapped_type
的唯一要求是它是DefaultConstructible。由于std::ostringstream
是DefaultConstructible - 这是完全有效的代码。
它与地图查找一样高效 - 这是否足够有效取决于您的程序的其余部分。如果您通过ostringstream
记录内容,我怀疑额外的地图查找对其余日志记录是否重要。但是,如果它是一个问题,你可以简单地保留引用:
auto&& log_info = my_logs["info"];
// ...
log_info << blah;
并使用参考文献。任何一个映射都不会使引用无效(除非您删除后续日志)。