📜  一维数组到二维 C++ (1)

📅  最后修改于: 2023-12-03 14:48:46.637000             🧑  作者: Mango

一维数组到二维 C++

简介

在C++中,一维数组是最简单的数据结构之一,它由一个连续的内存块组成,在内存中的存储方式是线性的。而二维数组则是一个由多个一维数组组成的表格结构,它在内存中的存储方式是按行或按列排列的。

本文将介绍如何将一维数组转换为二维数组的方法,并提供相关的示例代码。

方法一:使用指针

可以使用指针来模拟二维数组,将一维数组的元素按行或按列排列。

#include <iostream>

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6};
    int rows = 2;
    int cols = 3;

    int** matrix = new int*[rows];
    for (int i = 0; i < rows; i++) {
        matrix[i] = new int[cols];
        for (int j = 0; j < cols; j++) {
            matrix[i][j] = arr[i * cols + j];
        }
    }

    // 使用二维数组
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }

    // 释放内存
    for (int i = 0; i < rows; i++) {
        delete[] matrix[i];
    }
    delete[] matrix;

    return 0;
}
方法二:使用vector容器

C++的STL库提供了vector容器,可以方便地创建和操作二维数组。

#include <iostream>
#include <vector>

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6};
    int rows = 2;
    int cols = 3;

    std::vector<std::vector<int>> matrix(rows, std::vector<int>(cols));

    int index = 0;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            matrix[i][j] = arr[index++];
        }
    }

    // 使用二维数组
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}
方法三:使用数组转换工具函数

除了手动转换,也可以编写一个数组转换的工具函数,将一维数组转换为二维数组。

#include <iostream>
#include <vector>

std::vector<std::vector<int>> convertTo2DArray(int* arr, int rows, int cols) {
    std::vector<std::vector<int>> matrix(rows, std::vector<int>(cols));

    int index = 0;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            matrix[i][j] = arr[index++];
        }
    }

    return matrix;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6};
    int rows = 2;
    int cols = 3;

    std::vector<std::vector<int>> matrix = convertTo2DArray(arr, rows, cols);

    // 使用二维数组
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}
总结

通过上述方法,你可以将一维数组转换为二维数组,以便更方便地操作和处理数据。使用指针、vector容器或自定义的数组转换函数,都可以实现这一目标。根据实际需求选择合适的方法,让你的程序更加高效和易于维护。