std::copy
是一种更通用的方法,因为它可以处理具有不同值类型的容器(例如,从std::vector<float>
复制到std::vector::<double>
)。但是当两个容器的值类型相同时,我是否使用复制构造函数而不是std::copy
是否重要?
答案 0 :(得分:16)
assign
成员。std::copy
。通过准确地表示您尝试做的事情,您可以为编译器提供最可能的信息来优化其代码(例如,直接从现有容器构建它可以预先分配正确的内存)。
答案 1 :(得分:1)
一个潜在的重要区别是当你有一种情况,你可以调用移动构造函数而不是复制构造函数(例如,当你复制构造的对象是一个rvalue,比如函数的返回值) 。如果您遇到这种情况,您肯定希望通过移动构建或移动分配而不是使用std :: copy来确保利用它。
基本上这只是遵循马克B建议的另一个原因。