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_input
100个副本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)))
my_class::my_class()
: m_input(100, std::vector< std::vector<int> >(100, std::vector<int>(100) ))
{
}
Run Code Online (Sandbox Code Playgroud)
也就是说,正如Viktor在对该问题的评论中所说,实施多维领域应该通过投射到一维领域来实现.