访问多维 C++ std::vector

Accessing multidimensional C++ std::vector

问题:

如果我有一个指向 1D 的指针 std::vector 我可以通过函数 at(index) 访问它的内容,比如

std::vector<T> *ptr_to_vec;
T vec_value = ptr_to_vec->at(index);

有没有办法将它用于多维 std::vector,或者我被指针解引用困住了?

std::vector<vector<T> > *ptr_to_2Dvec;
T 2Dvec_value = (*ptr_to_2Dvec)[index1][index2];

我想避免在代码中取消引用指针。

您必须取消引用指针才能访问外部向量,就像您对一维向量所做的那样(使用 -> 而不是 *)。如果愿意,您可以在任一向量上使用 at 而不是 operator[]

ptr_to_vec->at(index1).at(index2);

I would like to avoid pointer dereferencing in the code.

你只能通过避免指针来做到这一点。如果可以的话,这是个好主意 - 使用引用或直接访问变量 - 但没有足够的信息来判断这是否适合你的情况。

有什么理由需要使用指向 vector 的指针吗?如果您只是将它用作堆栈变量,那么实际上没有任何理由使用指针,如果您将它传递给函数或 class 您可以使用引用代替(void func(vector<vector<T> > &vec)myclass(vector<vector<T> > &vec))。从语法的角度来看,这意味着没有解除引用。