在构造向量后立即调用clear方法?

5

我看过一些这样的C++代码:

std::vector<int> vec;
vec.clear();
vec.push_back(42);

创建vector后清空它的目的是什么(如果有的话)?


4
没有必要;清除操作是多余的,编译器可以将其优化掉。 - M.M
我猜这可能与具体实现有关。但即使在这种情况下,如果没有其他行在其中,这个程序也没有意义。 - Dmitry Kuzminov
1
可能仍然是从输出参数时遗留下来的旧代码,或者只是程序员对该类不够熟悉。 - JVApen
1个回答

7

这个调用没有意义 - 向量已经处于空状态。

如果你幸运的话,你的编译器会完全优化掉这个多余的调用 - 最近版本的gcc和clang都做到了这一点


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接