多维矢量初始化

Avi*_*ash 9 c++ stl initialization vector

我有以下std::vector声明:

std::vector<std::vector<std::vector<int> > > m_input;

我正在初始化它如下:

    m_input.resize (100);
    m_output.resize(100);
    for (int i = 0; i < 100; ++i) {
        m_input [i].resize(100);
        m_output[i].resize(100);
        for (int j = 0; j < 100; ++j){
            m_input [i][j].resize(100);
            m_output[i][j].resize(100);
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何通过成员初始化列表实现此目的?

MSa*_*ers 17

std::vector<T>有一个构造函数,它接受两个参数,一些元素和一个初始值.在你的情况下,你想初始化m_input100个副本std::vector<std::vector<int> >,所以它是: m_input(100, X).现在,X反过来又是一个100的向量,std::vector<int>它又包含一百个整数:

: m_input(100, std::vector<std::vector<int> >(100, std::vector<int>(100, 0)))


sbi*_*sbi 6

my_class::my_class()
 : m_input(100, std::vector< std::vector<int> >(100, std::vector<int>(100) ))
{
}
Run Code Online (Sandbox Code Playgroud)

也就是说,正如Viktor在对该问题的评论中所说,实施多维领域应该通过投射到一维领域来实现.

  • 应该是`std :: vector <int>`,当然? (2认同)