这是一个(希望)非常简单的问题-最近有人告诉我,使用C++样式初始化比传统(也是更常见的)赋值更好。
所以这段代码:
std::SomeSTLContainer::const_iterator it = container.begin();
std::SomeSTLContainer::const_iterator itEnd = container.end();
会比“慢”或效率低:
std::SomeSTLContainer::const_iterator it ( container.begin() );
std::SomeSTLContainer::const_iterator itEnd ( container.end() );
我了解其原因-第一个示例导致默认构造和初始化,然后是后续分配,而不是第二个示例中的特定构造和直接分配。但是,在现代处理器/编译器上,它真的有所不同吗?
最佳答案
这是完全错误的。
不,没有关系。 C++标准明确允许在这种情况下省略赋值,以便产生相同的代码。实际上,所有现代C++编译器都可以这样做。
此外,Charles是对的:永远不会调用赋值运算符,而只会调用复制构造函数。但是正如我已经说过的,即使这样也不会发生。
关于c++ - 优化迭代器定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/527663/