当前位置:  开发笔记 > 编程语言 > 正文

优化迭代器定义

如何解决《优化迭代器定义》经验,为你挑选了1个好方法。

这是一个(希望)非常简单的问题 - 我最近被告知使用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() );

我理解这个的原因 - 第一个例子导致默认构造和初始化然后是后续分配,而不是第二个例子中的特定构造和直接分配.但是,在现代处理器/编译器上,它真的有所作为吗?



1> Konrad Rudol..:

最近我被告知使用C++样式初始化比传统(和更常见)的分配更好.

这是完全错误的.

我理解这个的原因 - 第一个例子导致默认构造和初始化然后是后续分配,而不是第二个例子中的特定构造和直接分配.但是,在现代处理器/编译器上,它真的有所作为吗?

不,它没有任何区别.C++标准明确允许省略该情况下的赋值,以便生成相同的代码.实际上,所有现代C++编译器都是这样做的.

另外,Charles是对的:这永远不会调用赋值运算符,而是复制构造函数.但正如我所说,即便如此也不会发生.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有