初始化多维数组

时间:2020-06-26 13:22:51

标签: c++

如何使用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 个答案:

答案 0 :(得分:1)

确切的答案是,您不能像这样初始化数组,即,尽管std::vector可以为您完成这项工作,但在编译时不同时提供rowcol。 >

您可以使用以下代码:

#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包括在内,尽管他们并未对此进行过多考虑。您可以在this thread上获得更好的实现。

相关问题