如何合并两个向量?

时间:2014-11-20 13:13:02

标签: c++ vector merge

我正在开发一个应用程序,我希望提高效率。在一个重要的部分,我有2个大向量(具有相同的大小),我合并在一起。我想做的就是:

std::vector<int> first (4,2); //A vector containing 4 ints with value 2
std::vector<int> second (4,3);  //A vector with 4 ints with value 3

for(int i = first.size()-1; i > 0; --i){

  first[i] += second[i];

}

如何更有效率地做?提前谢谢!

4 个答案:

答案 0 :(得分:1)

为了有效合并多个向量,您应该使用SIMD(如果您的硬件支持它)。 有几种方法可以做到:

答案 1 :(得分:0)

例如,您可以使用多线程。但是你的阵列应该非常大,以获得利润 - 从大约1,000,000个元素开始

答案 2 :(得分:0)

您可以更快地找到此方法:

int main()
{
    int first = {5, 10, 15, 20, 25};
    int second = {50, 40, 30, 20, 10};

    int* f = first;
    int* e = first + (sizeof(first)/sizeof(int));
    int* s = second;

    while(f != e)
        *f++ += *s++;

    for(std::size_t i = 0; i < sizeof(first)/sizeof(int); ++i)
        std::cout << " " << first[i];
}

答案 3 :(得分:0)

试试这个:

int main()
{
    int first[] = {5,10,15,20,25};
    int second[] = {50,40,30,20,10};
    int len=first.size();
    for(int i = 0; i < second.size(); i++,len++)
    {
        first[len]= second[i];
    }
}