我正在开发一个应用程序,我希望提高效率。在一个重要的部分,我有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];
}
如何更有效率地做?提前谢谢!
答案 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];
}
}