c++ - 交换数组
问题描述
是否有一些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
这个。
#include <algorithm>
int main(int argc, char *argv[])
{
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}
}
std::swap(a, b);
for (int i = 0; i < 5; i++)
std::cout << a[i] << " ";
std::cout << endl;
for (int i = 0; i < 10; i++)
std::cout << b[i] << " ";
}
输出:
1 2 3 4 5
1 2 3 4 5 6 7 8 9 10
动态分配的内存不会以这种方式被触及,唯一改变的是指针a
和b
.
推荐阅读
- facebook - PSID-Migration 后,PSID 是否会在不同应用[Same Page] 中的用户保持不变?
- javascript - 访问多个参数
- docker - 如何在 Docker Hub 上验证生产 Docker Swarm
- typescript - 如何在 Ionic 4 滚动时更改标签栏上的背景颜色?
- node.js - Node + mongoose:删除模型及其关系中的所有记录
- c# - 在c#中使用epplus读取密码保护的excel
- ios - 将浮动操作按钮添加到选项卡栏控制器内的视图控制器
- asp.net-mvc - 使用对象集合发布表单
- vba - Access 2016 VBA Sub - RecordsetClone 上的“在此集合中找不到项目”错误
- php - 使用 mysqldump 和 php 备份数据库不起作用