C++ 这个代码是什么意思?这是否将向量转移到数组?
我有下面一个函数的代码,它以一个枢轴整数和一个向量a作为参数。我想知道这是什么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;
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;