操作员>>应该清空容器吗?

Qua*_*key 3 c++ refactoring iostream

我正在重构一些从文件中读取整数容器的代码.我已将公共代码移动到这些流提取器中:

std::istream &operator>>(std::istream &in, std::vector<int> &list);
std::istream &operator>>(std::istream &in, std::map<int, std::vector<int>> &graph);
Run Code Online (Sandbox Code Playgroud)

我的问题是这些函数是否应该在写入之前清除容器,或者只是向它们插入/附加数据.(在我的特定情况下,它没关系,但为了代码重用,我想知道.)

在这些情况下,C++中是否有约定?我正在尝试根据最小惊喜原则进行编码.

Dre*_*ann 6

标准库提供的提取运算符都替换目标变量的内容.

包括std::string,这是一个容器类型,就像你的例子.