填充用未指定尺寸初始化的向量的向量

时间:2019-02-03 06:29:42

标签: c++ vector

我创建了一个二维矢量,该矢量在初始化时填充为“ 0”:

std::vector<std::vector<char>> grid(rows, std::vector<char>(cols, '0'));

但是我想将其初始化为未指定大小的空2d向量:

std::vector<std::vector<char>>grid;

,然后填充它以达到与第一条语句相同的效果。我认为我不能使用fill(),因为它没有.begin().end(),而且我一直在使用for循环,而push_back无济于事,通常会遇到分段错误错误。我觉得我想做的事情应该是可能的,如果这是最好的方法呢? 任何帮助将不胜感激。 谢谢。

2 个答案:

答案 0 :(得分:1)

您可以通过几个for循环来做到这一点。

std::vector<std::vector<char>>grid;
for(int i=0; i<rows; i++) {
    vector<char> v;
    for(int j=0; j<cols; j++) {
        char ch;
        cin >> ch;
        v.push_back(ch);
    }
    grid.push_back(v);
}

答案 1 :(得分:1)

如果您能够使用C ++ 11或更高版本,则可以使用以下std::vector::resize()的重载:

void resize( size_type count, const value_type& value );

对于您的情况,它将是:

std::vector<std::vector<char>>grid;

...

grid.resize(rows, std::vector<char>(cols, '0'));