gpt4 book ai didi

c++ - 这个代码是什么意思?这是否将 vector 转移到数组?

转载 作者:太空狗 更新时间:2023-10-29 23:50:34 27 4
gpt4 key购买 nike

我有下面一个函数的代码,它以一个主元整数和一个 vector A 作为参数。我想知道这个 auto& A_ref = *A; 是什么意思。我不熟悉 &auto。这是否使 vector 指针成为数组?做这样的事情有什么值(value)

void function1(vector<int>* A, int pivot_index)
{
auto& A_ref = *A;
int pivot = A_ref[pivot_index];
}

最佳答案

看来代码作者不知道怎么用operator []用指针:) 或者他想简化对运算符(operator)的访问。所以不是

int pivot = ( *A )[pivot_index];

int pivot = A->operator[]( pivot_index );

他写了

auto& A_ref = *A;
int pivot = A_ref[pivot_index];

*A 的类型为 std::vector<int> .所以声明

auto& A_ref = *A;

可以这样写

std::vector<int> & A_ref = *A;

auto允许编译器从初始化表达式中推断出对象的类型。例如

int x = 10;
auto y = x;

在这里y与其初始化表达式具有相同的类型 x .如果你不想定义一个新对象,但想定义一个对已经存在的对象的引用,你可以这样写

int x = 10;
auto &rx = x;

考虑到那个类 std::vector已重载下标operator [] .因此,您可以像访问数组元素一样访问 vector 元素。

关于c++ - 这个代码是什么意思?这是否将 vector 转移到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29062787/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com