在应对时使用转换将一个矢量复制到另一个矢量的最佳方法是什么? 我有以下代码:
vector<Type2> function1(const vector<Type1>& type1Vector)
{
vector<Type2> type2Vector(type1Vector.size());
for (vector<Type1>::const_iterator it = type1Vector.begin(); it < type1Vector.end(); it++) {
type2Vector.push_back(convertion(*it));
}
return type2Vector;
}
有更好的方法吗?
答案 0 :(得分:12)
您的代码实际上包含一个错误,因为type2Vector
的大小是type1Vector
的两倍。实际上,您将其初始化为type1Vector
的大小,然后将转换后的元素添加到其上。
您可以轻松使用标准算法来实现您想要的效果:
#include <algorithm>
#include <iterator>
vector<Type2> function1(const vector<Type1>& type1Vector)
{
vector<Type2> type2Vector;
type2Vector.reserve(type1Vector.size());
std::transform(type1Vector.begin(), type1Vector.end(), std::back_inserter(type2Vector), convertion);
return type2Vector;
}