在向量内扩展向量

时间:2011-11-04 17:50:30

标签: c++ vector

我通过以下方式定义字符向量的向量来使用字符矩阵。

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。但是现在即使是这个简化版也行不通。

1 个答案:

答案 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。如果它确实有效,那么问题显然是在你没有向我们展示的一些代码中。