gpt4 book ai didi

c++ - 如何在作为 arg 传递给某个函数的数组中使用结构化绑定(bind)?

转载 作者:可可西里 更新时间:2023-11-01 17:44:04 26 4
gpt4 key购买 nike

我正在尝试将给函数的 2 个整数数组分解为 x, y

当使用 int init[2] 作为参数时,它不起作用。但是当我将它更改为 int (&init)[2] 时它会发生。

vector<vector<State>> Search(vector<vector<State>> board,
int init[2], int goal[2]) {
auto [x, y] = init;
}

这里的(&init)是什么意思?为什么在使用 int init[2] 时它不起作用?

最佳答案

int (&init)[2] 是对两个整数数组的引用。 int init[2] 作为函数参数是 C++ 的 C 遗产的遗留物。它没有将函数声明为采用数组。参数的类型调整为 int* 并且传递给函数的数组的所有大小信息都将丢失。

考虑到实际采用指针,可以使用任意大小的数组调用采用 int init[2] 的函数。它甚至可以传递 nullptr。虽然一个采用 int(&)[2] 的函数只能被赋予一个有效的两个数组作为参数。

由于在工作版本中 init 引用了一个 int[2] 对象,因此结构化绑定(bind)可以与该数组对象一起使用。但是衰减的指针不能成为结构化绑定(bind)的主题,因为可用的静态类型信息只能访问指向的单个元素。

关于c++ - 如何在作为 arg 传递给某个函数的数组中使用结构化绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56092567/

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