You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何高效复制int指针指向的数组?技术问询

高效复制数组并返回指针的方法

哈哈,太懂你这种大数组逐元素复制的煎熬了!给你几个不用手动循环拷贝的高效办法:

  • 用std::memcpy直接内存拷贝
    这是C标准库的函数,直接按字节复制整块内存,效率拉满,完全不用逐元素折腾。比如处理大小为N的数组:

    int* foo(int* a, int N) {
        int* b = new int[N]; // 先分配对应大小的内存
        std::memcpy(b, a, sizeof(int) * N); // 一键完成整个数组的拷贝
        // 对b执行各种增量操作
        return b;
    }
    
  • 用C++的std::copy算法
    来自<algorithm>头文件,是类型安全的批量复制方式,编译器优化后效率和memcpy不相上下:

    #include <algorithm>
    
    int* foo(int* a, int N) {
        int* b = new int[N];
        std::copy(a, a + N, b); // 从a的起始位置到a+N,批量复制到b
        // 操作b
        return b;
    }
    
  • 退一步:用std::vector替代裸指针
    虽然你要返回int*,但std::vector可以直接返回,还不用手动管理内存;要是非得拿指针,用vec.data()就能获取底层数组的指针,复制起来也超简单:

    #include <vector>
    
    std::vector<int> foo(int* a, int N) {
        std::vector<int> b(a, a + N); // 用迭代器直接构造完成复制
        // 对b执行操作
        return b;
    }
    // 要int*的话可以这么拿:auto ptr = foo(a, N).data();
    

对了,你说NOTE里的T间距特别奇怪?哈哈我刚扫了一眼,确实有点违和感,搞不好是排版时的小bug😂

内容的提问来源于stack exchange,提问作者J. Stutesman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:42:03