c++ - 在 vector 中扩展 vector

标签 c++ vector

我通过以下方式定义字符 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/

相关文章:

c++ - 动态改变 qlabel 的位置

c++ - C++中真正的异步文件IO

c# - C# 中的矢量投影/拒绝?

python - Matplotlib 不显示正确的矢量

c# - 无法将类型 'UnityEngine.Vector2?' 隐式转换为 'UnityEngine.Vector2'

c++ - 在 Qt 中将 QVector 写入文本文件

c++ - 从控制台应用程序启动控制台应用程序

c++ - 有关解决此图像处理挑战的指示?

vector - 三.JS |如何找出两个向量之间的XYZ旋转?

java - 单线程应用程序中的 ArrayList 与 Vector 性能