访问多维 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)
)。从语法的角度来看,这意味着没有解除引用。
问题:
如果我有一个指向 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)
)。从语法的角度来看,这意味着没有解除引用。