C++中的二维字符串

dad*_*ada 3 c++ stl matrix

我想在C++中编写类似2d字符串的东西.我尝试过:

vector< vector<string> > table;
        int m,n,i,j;
        string s;
        cin>>n>>m;
        for(i=0;i<n;i++) {
                for(j=0;j<m;j++) {
                        cin>>s;
                        table[i][j] = s;
                }
        }
        cout << "\n\n\n\n";
        for(i=0;i<n;i++) {
                for(j=0;j<m;j++) {
                        cout<<table[i][j]<<" ";
                }
                cout<<"\n";
        }
Run Code Online (Sandbox Code Playgroud)

没有编译错误,但当我输入如下输入:

10 20
.....#..............
.....#..............
.....#..............
.....#..............
######..............
.......###..........
.......#.#..........
.......###...#######
.............#.....#
.............#######
Run Code Online (Sandbox Code Playgroud)

它给了我分段错误.为什么?怎么了 ?它应该怎么做才能正常工作?谢谢.

And*_*ffe 7

这个问题似乎意味着所需的数据结构是一组各有字符的nm.有两种方法可以考虑这个 - 作为nxmchar矩阵,或作为字符n m向量(和字符串相似但不相同vector<char>).

因此,看来你不想要vectorvectorstringS,你想要么一个vectorvectorS的charS,或只是一个vectorstring秒.

在任何情况下,可以选择使用表[i] [j]或之前分配的空间的适当量(稍微更惯用的C++,但因为在这种情况下没有必要的mn预先已知的)使用类似于push_back添加到末尾.

还要注意的是,cin>>s读取整个线stdin(这使得该vector<string>解决方案有点容易对付,我认为).