如何用C++定义并实现一个swap函数,以便于对3x3的二维数组进行转置操作
时间: 2024-11-22 11:44:22 浏览: 21
在C++中,你可以定义一个通用的`swap`函数,然后用它来进行3x3二维数组的转置操作。首先,我们需要创建一个模板函数,因为它可以接受任何类型的数组作为参数。这里是一个简单的示例:
```cpp
template <typename T>
void swapElements(T (&matrix)[3][3], int i, int j) {
// 检查索引是否有效
if (i >= 0 && i < 3 && j >= 0 && j < 3) {
T temp = matrix[i][j];
matrix[i][j] = matrix[j][i]; // 交换元素
matrix[j][i] = temp;
}
}
// 转置函数
template <typename T>
void transposeMatrix(T (&matrix)[3][3]) {
for (int i = 0; i < 3; ++i) {
for (int j = i + 1; j < 3; ++j) {
swapElements(matrix, i, j); // 使用 swapElements 函数
}
}
}
// 示例
int main() {
int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
transposeMatrix(arr);
// 打印转置后的矩阵
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
std::cout << arr[i][j] << " ";
}
std::cout << "\n";
}
return 0;
}
```
这个`transposeMatrix`函数遍历了3x3矩阵的一半行,因为每一对对应位置的元素会互相交换一次。`swapElements`函数则负责实际的元素交换。
阅读全文