要使用 [] 运算符访问元素,您必须在对象上执行此操作,而不是指向对象的指针。
尝试;
(*vec)[x];
例如
for (int i = 0; i < vec->size(); i++)
{
printf("Value at %d is %d\n", i, (*vec)[i]);
}
请注意,在指针上调用函数时,您通常使用->运算符而不是. 运算符,但你可以很容易地做到 (*vec).some_func(); 反而。
[]、--、++ 等运算符既可以作用于对象,也可以作用于指针。对于对象,它们充当函数调用,但在指针上,它们充当对地址的数学运算。
例如;
pointer[nth];
*(pointer + nth);
具有完全相同的效果 - 它们从指针的开头返回第 n 个对象。(注意第二个例子中 * 的位置,它是在应用偏移后调用的。
另外两个提示;
您还可以通过将向量作为引用而不是指针传递来避免像这样取消引用。它并不总是一个合适的选择,但它确实会带来更简洁的代码。
void my_func(std::vector<int>& vector)
{
// vector can then be used as a regular variable
}
如果您要经常将特定类型的向量传递给函数,那么您可以使用 typedef 来提高清晰度和节省打字时间。
typedef std::vector<int> IntVector;
void my_func(IntVector& vector)
{
}