交换不同大小的数组
Swap arrays of different sizes
我需要交换两个不同大小的std::string
数组的内容。使用std::vector<std::string>
来使用swap
向量方法是其他类似问题的答案,但是在我的情况下使用向量是不可取的,因为交换是数组可能改变其长度的唯一时刻-这个函数只会被调用一次,在初始化时,除了它们将是(非常大的)固定长度的数组。最后,我重新构造了我的代码,以避免交换,但我很好奇这是否可行。我尝试了以下内容,其中n
是a
的长度,m
是b
的长度,但它出现了分段错误。
void swap_strarr(std::string *a, std::string *b, int n, int m) {
int i;
std::string *tmp;
tmp = new std::string[n];
for (i = 0; i < n; i++) {
tmp[i] = a[i];
}
delete []a;
a = new std::string[m];
for (i = 0; i < m; i++) {
a[i] = b[i];
}
delete []b;
b = new std::string[n];
for (i = 0; i < n; i++) {
b[i] = tmp[i];
}
delete []tmp;
}
我首先尝试在a
和b
上没有delete
s。我也试过使用std::string**
,它甚至不应该工作-它没有。
所以…这可能吗?或者,如果我做了交换,我应该只使用std::vector
,即使它们是固定大小的数组(除了交换)和几百万个元素长?
为什么不干脆这样写:
std::string* tmp = a;
a = b;
b = tmp;
或者更简单(谢谢juanchopanza):
std::swap(a, b);
相关文章:
- 通过交换元素使数组相同
- 如何在数组中交换最小和最大的位置?
- 交换函数不是在 C++ 中交换 2D 数组的元素
- 如何交换数组中的元素?
- C++:交换矩阵的行:使用单维数组
- 使用指针 c++ 交换结构数组中的元素
- 使用指针交换数组的内容
- C++数组交换并查找最小元素
- 使用指针交换而不引用数组C++
- 指针数组交换无需直接访问数组
- 交换数组
- 如何在C++中交换对象数组的 2 个不同对象
- 如何将元素的索引从2D数组存储到1D数组中,然后交换这些值
- 在C++中使用 2D 数组进行交换
- 代码是否交换数组的两个数字
- std::在 std::shared_ptr 之间交换,<A>其中 A 具有动态数组
- 在2D数组中交换行的最佳方法
- 如何在 2D 数组 c++ 中交换元素
- 交换二维数组中的两个值
- 如何使用数组交换对象,c++.我想改变