我创建了一个二维矢量,该矢量在初始化时填充为“ 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
无济于事,通常会遇到分段错误错误。我觉得我想做的事情应该是可能的,如果这是最好的方法呢?
任何帮助将不胜感激。
谢谢。
答案 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'));