我正在尝试找到将两个数组附加在一起的最快方法 我知道这是一个简单的问题。但我需要一种非常快速的方法来完成它,可能是使用库函数
下面是我的代码,它没有任何库函数
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[] = {1,2,3,4,5};
int b[] = {6,7,8,9,10};
int c[10];
for(int i=0; i<5; i++)
{
c[i] = a[i];
}
for(int i=5; i<10; i++)
{
c[i] = b[i-5];
}
for(int i=0; i<10; i++)
{
cout << c[i] << endl;
}
}
什么是更有效的方法?
最佳答案
首先,我认为你的循环很好。如果您愿意,您可以尝试将它们合并到一个循环中是否可以加快速度,因为您只需要一半的迭代:
for (int i = 0; i < 5; ++i) {
c[i] = a[i];
c[i+5] = b[i];
}
但是衡量这个,绝不保证会更快。如果阵列总是那么小,那么性能上出现任何差异的可能性很小。
如果你想使用 <algorithm>
库(为了可读性我喜欢这样做,但在你的情况下循环足够短),你可以这样做:
std::copy(a, a+5, c);
std::copy(b, b+5, c+5);
它很可能不比循环快,但在我看来看起来更干净。当数据量变大时,它实际上可能会通过以优化方式实现来提供加速,但一如既往地对其进行测量。
我会远离memcpy
尽管。它不适用于所有类型,并且不提供(或不应提供任何)优于 std::copy
的优势.
最后一点,考虑用现代 std::array
替换原始 C 数组.这里的一个优点是您可以使用 =
复制它。 ,加上一些简洁的成员函数,如 fill
和 size
.
关于c++ - 附加两个数组的最快方法(连接两个数组)C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29039139/