我想在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)
它给了我分段错误.为什么?怎么了 ?它应该怎么做才能正常工作?谢谢.
这个问题似乎意味着所需的数据结构是一组各有字符的n行m.有两种方法可以考虑这个 - 作为nxmchar矩阵,或作为字符n m向量(和字符串相似但不相同vector<char>).
因此,看来你不想要vector的vector第stringS,你想要么一个vector的vectorS的charS,或只是一个vector的string秒.
在任何情况下,可以选择使用表[i] [j]或之前分配的空间的适当量(稍微更惯用的C++,但因为在这种情况下没有必要的m和n预先已知的)使用类似于push_back添加到末尾.
还要注意的是,cin>>s读取整个线从stdin(这使得该vector<string>解决方案有点容易对付,我认为).