C++ 这个代码是什么意思?这是否将向量转移到数组?

C++ 这个代码是什么意思?这是否将向量转移到数组?,c++,C++,我有下面一个函数的代码,它以一个枢轴整数和一个向量a作为参数。我想知道这是什么auto&a_ref=*a意味着。我不熟悉汽车。这是否使向量指针成为数组?做这样的事有什么价值 void function1(vector<int>* A, int pivot_index) { auto& A_ref = *A; int pivot = A_ref[pivot_index]; } void函数1(向量*A,int-pivot\u索引) { 自动&A_ref=*A;

我有下面一个函数的代码,它以一个枢轴整数和一个向量a作为参数。我想知道这是什么
auto&a_ref=*a意味着。我不熟悉汽车。这是否使向量指针成为数组?做这样的事有什么价值

void function1(vector<int>* A, int pivot_index)
{
    auto& A_ref = *A;
    int pivot = A_ref[pivot_index];
}
void函数1(向量*A,int-pivot\u索引)
{
自动&A_ref=*A;
int pivot=A_ref[pivot_index];
}

自动由编译器展开,以匹配分配的右值。 它将扩展到
向量

所以第一行等于
vector&A\u ref=*A

无论如何,这个代码不是最安全或直观的。你可以简单地写:

void function1(vector<int>& A, int pivot_index)
{
    int pivot = A[pivot_index];
}
void函数1(向量&A,int-pivot\u索引)
{
int pivot=A[pivot_index];
}
根据这个
auto
“指定要声明的变量类型将从其初始值自动推断出来。”所以基本上我认为在这种情况下,这个“auto”是一个舒适的问题

*A
返回指针的内容,即向量,它被
A\u ref
保持

A_ref[pivot_index]
只是访问向量

如果希望在不使用
A_ref
的情况下访问向量,则应

(*A)[pivot_index]

代码的作者似乎不知道如何使用带有指针的
操作符[]
),或者他想简化对操作符的访问。所以不是

int pivot = ( *A )[pivot_index];

他写道

auto& A_ref = *A;
int pivot = A_ref[pivot_index];
*A具有类型
std::vector
。So声明

auto& A_ref = *A;
可以这样写

std::vector<int> & A_ref = *A;
这里的
y
与其初始值设定项表达式
x
具有相同的类型。如果您不想定义一个新对象,但想定义一个对已经存在的对象的引用,您可以编写一个示例

int x = 10;
auto y = x;
int x = 10;
auto &rx = x;

考虑到类
std::vector
重载了下标
运算符[]
。因此,您可以使用与数组元素相同的方式访问向量元素。

auto
是C++11的一部分,它会使编译器自行确定类型。编译器将使用
*A
来计算类型,由于
*A
std::vector
类型,那么
A_ref
的类型将作为该类型的参考(因为
&
),我很抱歉,不知怎的错过了这一点。
int x = 10;
auto &rx = x;