通过转换将C ++向量复制到另一个的最佳方法

时间:2015-10-30 09:58:42

标签: c++

在应对时使用转换将一个矢量复制到另一个矢量的最佳方法是什么? 我有以下代码:

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;
}

有更好的方法吗?

1 个答案:

答案 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;
}