我通过以下方式定义字符向量的向量来使用字符矩阵。
std::vector<std::vector <char> > CharMap;
std::vector <char> temp(sizeY, '.');
std::vector <std::vector <char> > temp2(sizeX, temp);
CharMap = temp2;
到目前为止一直运行良好,但现在我需要在运行时扩展最里面的向量,并且出现问题。
cout << (int) CharMap[0].size();
CharMap[0].push_back( '.' );
cout << (int) CharMap[0].size();
CharMap[0]
是char
s的向量。这段代码编译没有问题。当它运行时,矢量的大小根本不会改变。我在这里尝试做的就是将大小增加1,但两个cout
的输出相同。为什么尺寸没有增加?
在实际代码中,我将增加所有CharMap[i]
的大小,迭代i
。但是现在即使是这个简化版也行不通。
答案 0 :(得分:1)
快速测试程序似乎按预期工作:
#include <vector>
#include <iostream>
int main() {
std::vector<char> temp(17, '.');
std::vector<std::vector<char> > map(10, temp);
for (int i=0; i<map.size(); i++) {
std::cout << "Before addition, size = " << map[i].size();
map[i].push_back('.');
std::cout << ", after addition, size = " << map[i].size() << "\n";
}
return 0;
}
我想你可以尝试一下,看看你的编译器产生了什么 - 它几乎不可能,在这种情况下,你显然已经发现了一个bug。如果它确实有效,那么问题显然是在你没有向我们展示的一些代码中。