我正在尝试使用
vector<vector<char> > matrix;
作为实际矩阵。
矩阵用所有'\ 0'初始化,并在此过程中填充。
让我们想象一下,在某个时间点我处于这种情况:
0 1 2 3
0 a b c \0
1 b b \0 \0
2 c \0 \0 \0
3 \0 \0 \0 \0
如果我想在第一行有一个char *,我可以做:
&word_square[0][0]
这将给我一个指向第一行的指针,指针我可以用作C char数组(即“abc”)
如果我想以同样的方式获得第一列怎么办? 是否有可能或者我必须使用for?
int i =0;
string column;
while(matrix[i][0] != '\0' )
{
column.push_back(matrix[i][0]);
i++;
}
我希望得到一个更清洁的解决方案,就像我上面做的那样。 初始化一个字符串只是为了得到我需要的列,我已经有了它不太好。而且它减慢了我的过程。
非常感谢那些愿意帮助的人。
答案 0 :(得分:4)
使用vector< vector<char> >
,您无法保证内部向量将其数据连续存储在内存中,这意味着没有可能的方法让char*
以列顺序指向元素,除非您手动复制数据。
答案 1 :(得分:2)
你可以slice a std::valarray按照自己感兴趣的方式做点什么。它们使用连续的内存,并且切片管理对原始数据对象的访问,因此不涉及复制。
答案 2 :(得分:1)
矢量矢量不可能。最好的办法是编写自己的返回代理对象的类。