c++ - 附加两个数组的最快方法(连接两个数组)C++

标签 c++

我正在尝试找到将两个数组附加在一起的最快方法 我知道这是一个简单的问题。但我需要一种非常快速的方法来完成它,可能是使用库函数

下面是我的代码,它没有任何库函数

  #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 数组.这里的一个优点是您可以使用 = 复制它。 ,加上一些简洁的成员函数,如 fillsize .

关于c++ - 附加两个数组的最快方法(连接两个数组)C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29039139/

相关文章:

c++ - boost LNK2019 错误

c++ - 如何以编程方式禁用/启用 CMFCTasksPane 中的任务而不完全隐藏它们?

c++ - 使用 libarchive 将 gzip 文件解压到内存

c++ - Qt - 设置.o文件的输出路径

将 XCode 升级到版本 11.1 后 C++ 编译失败

c++随机数生成器,允许用户选择范围

c++ - CreateGraphicsPipelineState 失败并显示 E_INVALIDARG

c++ - 通过 TLS 将 HTTP2 帧发送到服务器

c++ - 交叉编译用 `#ifdef`好还是继承好?

c++ - 测试字符串或字符的大写、小写和数字 C++