我通过以下方式定义字符 vector 的 vector 来使用字符矩阵。
std::vector<std::vector <char> > CharMap;
std::vector <char> temp(sizeY, '.');
std::vector <std::vector <char> > temp2(sizeX, temp);
CharMap = temp2;
到目前为止一切正常,但现在我需要在运行时扩展最内层的 vector ,但出了点问题。
cout << (int) CharMap[0].size();
CharMap[0].push_back( '.' );
cout << (int) CharMap[0].size();
CharMap[0]
是一个 char
vector 。这段代码编译没有问题。当它运行时, vector 的大小根本不会改变。我在这里要做的就是将大小增加 1,但是两个 cout
的输出是相同的。为什么大小没有增加?
在实际代码中,我将增加所有 CharMap[i]
的大小,遍历 i
。但现在即使是这个简化版本也不起作用。
最佳答案
一个快速测试程序似乎按预期工作:
#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;
}
我想您可以尝试一下,看看它用您的编译器产生了什么——它几乎不可能不会,在这种情况下,您显然已经发现了一个错误。如果它确实有效,那么问题显然出在您没有向我们展示的某些代码中。
关于c++ - 在 vector 中扩展 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8013695/