访问vector <vector <char>&gt;行和列的元素</vector <char>

时间:2011-02-21 22:10:46

标签: c++ vector matrix std

我正在尝试使用

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++;
}

我希望得到一个更清洁的解决方案,就像我上面做的那样。 初始化一个字符串只是为了得到我需要的列,我已经有了它不太好。而且它减慢了我的过程。

非常感谢那些愿意帮助的人。

3 个答案:

答案 0 :(得分:4)

使用vector< vector<char> >,您无法保证内部向量将其数据连续存储在内存中,这意味着没有可能的方法让char*以列顺序指向元素,除非您手动复制数据。

答案 1 :(得分:2)

你可以slice a std::valarray按照自己感兴趣的方式做点什么。它们使用连续的内存,并且切片管理对原始数据对象的访问,因此不涉及复制。

答案 2 :(得分:1)

矢量矢量不可能。最好的办法是编写自己的返回代理对象的类。