C++中交换数组的方法包括:①std::array用std::swap实现O(1)交换;②C风格数组需循环逐元素交换,时间复杂度O(n);③std::vector调用swap成员函数高效交换;④指针管理的动态数组可通过交换指针优化性能。

在C++中,交换两个数组有多种方法,具体选择取决于数组类型(普通数组或STL容器)、大小以及性能需求。以下是几种常见且有效的数组交换方式。
#include <array>
#include <iostream>
#include <algorithm>
int main() {
std::array<int, 5> arr1 = {1, 2, 3, 4, 5};
std::array<int, 5> arr2 = {6, 7, 8, 9, 10};
std::swap(arr1, arr2); // 直接交换
// 输出arr1验证
for (int x : arr1) std::cout << x << " "; // 输出: 6 7 8 9 10
return 0;
}这种方式效率高,时间复杂度为 O(1),因为只是交换内部指针或元数据,不逐个复制元素。
#include <iostream>
int main() {
int arr1[5] = {1, 2, 3, 4, 5};
int arr2[5] = {6, 7, 8, 9, 10};
const int size = 5;
for (int i = 0; i < size; ++i) {
int temp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = temp;
}
// 验证结果
for (int x : arr1) std::cout << x << " "; // 输出: 6 7 8 9 10
return 0;
}这种方法兼容性好,但时间复杂度为 O(n),适合小数组或无法使用STL的场景。
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
vec1.swap(vec2); // 或 std::swap(vec1, vec2);
for (int x : vec1) std::cout << x << " "; // 输出: 4 5 6
return 0;
}这种交换是常数时间操作,仅交换内部指针,非常高效。
立即学习“C++免费学习笔记(深入)”;
#include <iostream>
int main() {
int* arr1 = new int[3]{1, 2, 3};
int* arr2 = new int[3]{4, 5, 6};
// 交换指针
int* temp = arr1;
arr1 = arr2;
arr2 = temp;
std::cout << arr1[0] << std::endl; // 输出: 4
delete[] arr1;
delete[] arr2;
return 0;
}这种方法最快,适用于动态分配的大数组,只需交换地址。
基本上就这些常用方法。根据数组类型选择合适的方式:优先使用 std::array 或 std::vector 配合 std::swap;传统数组则手动循环交换;大数组可考虑指针交换优化性能。
以上就是c++++中如何交换两个数组_c++数组交换方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号