c++ - 自定义复制动态数组

标签 c++ arrays copy

如何像这样复制动态数组:复制数组的所有元素,但不是从 0 索引开始,而是从第一个开始。

//We have array x, which have 5 elements, and array y, which have 6 elements;
y[1]=x[0];
y[2]=x[1];
//etc...

附言不想逐个元素复制,我可以这样使用 std::copymemcpy 吗??

编辑:重新分配数组是否比这更有效?

int* arr = new int[20];
...
//wanna resize to 25?
int* temp = new int[25];
std::copy(arr, arr+20, temp);
delete [] arr;
arr = temp;
... //now arr has 25 elements

但不使用 vector 或其他 STL 对象。

最佳答案

std::copy 使用迭代器,因此您可以将目标迭代器递增 1:

对于固定大小的数组和 c++11,这应该有效:

std::copy( std::begin(x), std::end(x), std::begin(y)+1 )

对于动态数组,std::end 不起作用,但可以使用指针算法:

std::copy( x, x+5, y+1 )

关于c++ - 自定义复制动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29888970/

相关文章:

PHP - 回显 'Array' 错误

file - 如何将文件从本地机器复制到 Windows 上的 docker 容器

c++ - 检查哪个网格元素在原始多边形内

c++ - 为什么 'unspecified_bool' 对于对其包装类型具有内部转换的类失败?

ios - 如何禁用 UIButton 并发送 UIAlertView 消息

docker - 如何将文件夹从Docker复制到其他文件夹?

c++ - 在 Visual Studio 2010 中复制项目

c++ - 获取Windows版本的正确方法

c++ - stringstream 到底是做什么的?

arrays - 从 Julia 的字母表中有效地生成长度为 n 的所有单词的集合