【发布时间】:2019-07-03 06:47:39
【问题描述】:
是否有一些library fucntion 可以交换两个动态分配的数组中的值。
假设我声明并初始化我的数组,如:
int * a = new int[10];
int * b = new int[5];
for(int i = 0; i < 10; i++){
a[i] = i + 1; //stores a[10] = {1,2,3,4,5,6,7,8,9,10}
}
for(int i = 0; i < 5; i++){
b[i] = i + 1; //stores b[5] = {1,2,3,4,5}
}
swap(a,b);
我希望 a 存储:{1, 2, 3, 4, 5}
并且数组b 应该存储:{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
【问题讨论】:
-
你没有数组,你有指针。区别很重要,因为
std::swap将交换指针(但不会交换数组)。 -
除非你使用
std::vector之类的东西并传递引用,否则你只需要交换指针 -
另外,不要忘记
delete[]你的new[]指针。 -
我宁愿说,如果你不需要,不要使用
new!就像在这个例子中一样。在现代 C++ 中,应尽可能避免自定义内存管理。如果由于某种原因,您仍然需要使用它,最好将它抽象到某个特殊的类中。