gpt4 book ai didi

c++ - 调用接口(interface)时初始化数组不能更改

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:58 28 4
gpt4 key购买 nike

我有一个我无法更改的接口(interface) takes (int[], int.int)

void foo(int[], int a, int b);

我想调用它而不必先初始化一个数组。即像这样的东西

foo({1,2,3}, 1, 2)

不是

int [] a = {1,2,3};
foo(a, 1, 2);

我正在使用 MSVC 2013。我尝试了编译器提示的以下内容

foo( (int[]) {1,2,3}, 1, 2);

最佳答案

int[] 作为参数等同于 int*。因此,您可以使用 data() 成员函数返回其缓冲区的指针:

foo(std::vector<int>{1, 2, 3}.data(), 1, 2); // std::array can also be used

请注意,std::vector 在其析构函数运行时释放其缓冲区,在本例中是在完全评估临时出现的完整表达式时(在 ;)。因此,请确保不要持有指向任何超出其生命周期的元素的指针,否则您将拥有一个悬空指针。取消引用所述悬挂指针将产生未定义的行为

关于c++ - 调用接口(interface)时初始化数组不能更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25961444/

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