提问者:小点点

初始化多维数组


如何用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} };

我想初始化数组,如下=

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

共1个答案

匿名用户

确切的答案是,您无法初始化这样的数组,即在编译时不同时提供rowcol,尽管std::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
}

自从OP在评论中询问了print_vectorprint_matrix之后,我就包含了它们,尽管我没有过多地考虑它们。 您可以在这个线程上获得更好的实现。