joh*_*ers 5 c++ sorting move-semantics c++11
isocpp.org指出:
基于移动的std :: sort()和std :: set :: insert()的测量速度比基于复制的版本快15倍[...]如果你的类型有移动操作,你会自动获得性能优势来自标准算法.
这是否意味着如果调用sort()没有移动构造函数或移动赋值运算符的用户定义类型,那么是否使用了移动语义?换句话说,为了获得C++ 11性能改进的诸多好处,您应该编辑现有代码以显式添加移动操作?
此外,如果要进行排序,是容器还是容器内的类型,或两者都必须定义移动操作?
这是否意味着如果调用
sort()没有移动构造函数或移动赋值运算符的用户定义类型,那么是否使用了移动语义?
正确.如果班级不可移动,那么它将回归复制
换句话说,为了获得C++ 11性能改进的诸多好处,您应该编辑现有代码以显式添加移动操作?
如果你可以肯定,谁不喜欢更多的表现.请注意,根据班级的不同,您可能会自动生成移动操作.
此外,如果要进行排序,是容器还是容器内的类型,或两者都必须定义移动操作?
容器本身不需要是可移动的. std::sort要求传递给它的迭代器应满足ValueSwappable(17.6.3.2)的要求.并且解除引用迭代器返回的类型应满足MoveConstructible(表20)和MoveAssignable(表22)的要求.
| 归档时间: |
|
| 查看次数: |
692 次 |
| 最近记录: |