我正在尝试用字符填充C ++中的2D矢量,但是当我运行此代码时,它以一行字符(*..)结尾。

我如何像这样填充2D向量:
*.*.**

#include <iostream>
#include <vector>

int main()
{
    std::vector<std::vector<char> > vec2D;
    std::vector<char> rowV;

    unsigned int row=2;
    unsigned int col=3;

    char c;
    unsigned int temp=0;

    while(temp!=col)
    {
        while(rowV.size()!=row)
        {
            std::cin>>c;
            rowV.push_back(c);
        }
        vec2D.push_back(rowV);
        ++temp;
    }

    return 0;
}

最佳答案

您应在每次插入后清除rowV,否则它将已满并且不会添加其他字符。同样,row应该被col交换,反之亦然,否则,您将获得3x2(而不是2x3)的2D向量。

while(temp!=row)
{
    while(rowV.size()!=col)
    {
        std::cin>>c;
        rowV.push_back(c);
    }
    vec2D.push_back(rowV);
    rowV.clear(); // clear after inserting
    ++temp;
}

关于c++ - 在C++中填充2D vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47639428/

10-08 22:44