首页 > 解决方案 > 初始化多维数组

问题描述

如何使用变量初始化数组,例如int x[row][col];

int myArray[7][4] = { {1,2,3,4}, {5,6,7,8}, {5,6,7,8}, {5,6,7,8}, {5,6,7,8}, {5,6,7,8}, {5,6,7,8} };

我想将数组初始化为 this =

int myarray({2,3,4},{12,4,5},{2,2,2})

标签: c++

解决方案


确切的答案是你不能像这样初始化一个数组,即,在编译时不提供两者,但row可以为你完成这项工作。colstd::vector

您可以使用如下代码:

#include <iostream>
#include <vector>

void print_vector(std::vector<int> &v) {
    std::cout << "{ ";
    for (auto &&i : v) {
        std::cout << i;
        if (&i != &v.back()) {
            std::cout << ",";
        }
    }
    std::cout << " }";
}

void print_matrix(std::vector<std::vector<int>> &v) {
    std::cout << "{ ";
    for (auto &&i : v) {
        print_vector(i);
        if (&i != &v.back()) {
            std::cout << ", ";
        }
    }
    std::cout << " }" << std::endl;
}

int main() {
    std::vector<std::vector<int>> v = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; 
// same as std::vector<std::vector<int>> v({{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}});
    print_matrix(v);
// prints { { 1,2,3,4 }, { 5,6,7,8 }, { 9,10,11,12 } } on stdout
}

我已经包括在内print_vector,并且print_matrix自从 OP 在评论中询问他们以来,尽管没有考虑太多。您可以在此线程上获得更好的实现。


推荐阅读