C++将两个int数组连接成一个更大的数组

imk*_*dal 17 c++ arrays int concatenation

有没有办法在C++中采用两个int数组

int * arr1;
int * arr2;
//pretend that in the lines below, we fill these two arrays with different
//int values
Run Code Online (Sandbox Code Playgroud)

然后将它们组合成一个包含两个数组值的较大数组?

tex*_*uce 29

int * result = new int[size1 + size2];
std::copy(arr1, arr1 + size1, result);
std::copy(arr2, arr2 + size2, result + size1);
Run Code Online (Sandbox Code Playgroud)

只是建议,vector作为动态数组而不是指针会做得更好

  • 由于最上面的答案没有描述 `std::copy` 的作用,这里是[文档](https://en.cppreference.com/w/cpp/algorithm/copy)的链接 (3认同)
  • 也许解释一下这个“复制”功能是什么? (2认同)

Ree*_*sey 11

如果您正在使用数组,则需要分配一个足够大的新数组来存储所有值,然后将值复制到数组中.这需要知道数组大小等.

如果您使用std::vector而不是数组(具有其他好处),这会变得更简单:

std::vector<int> results;
results.reserve(arr1.size() + arr2.size());
results.insert(results.end(), arr1.begin(), arr1.end());
results.insert(results.end(), arr2.begin(), arr2.end());
Run Code Online (Sandbox Code Playgroud)