gpt4 book ai didi

c++ - 没有匹配函数调用 ‘begin(int [n])’

转载 作者:行者123 更新时间:2023-11-30 04:58:33 25 4
gpt4 key购买 nike

我尝试了很多东西,但仍然报错:

no matching function for call to ‘begin(int [n])’

什么是最好的方法?

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
int n;
cin >> n;
int arr[n];
for(int i = 0; i < n; i++){
cin >> arr[i];
}
reverse(begin(arr), end(arr));
for(int j = 0; j < n; j++){
cout << arr[j] <<" ";
}
return 0;
}

最佳答案

error:no matching function for call to ‘begin(int [n])’

这是因为您使用了非标准 Variable Length Array ,在这里:

cin >> n;
int arr[n] ;

因此,不可能将std::reverse 等标准算法应用于这种非标准数组。

如果您将其更改为具有大小的普通数组,例如:

const int n = 3;
int arr[n] ;

您编写的代码是有效的并且可以工作。 See here

但是,现在您不能输入数组的大小。


Whats the best approach?

使用std::vector相反。

现在您还可以选择不使用 std::reverse,而是使用 std::vector::reverse_iterator 进行反向打印。(如果这就是您想要的)

例如:See output here

#include <vector>
#include <iostream>
#include <algorithm>

int main()
{
int n;
std::cin >> n;
std::vector<int> arr(n);
for(int& ele: arr) std::cin >> ele;
//std::reverse(std::begin(arr), std::end(arr));
//for(const int ele: arr) std::cout << ele << " ";
//or simply
std::for_each(arr.rbegin(), arr.rend(),[](const int ele){ std::cout << ele << " "; });
return 0;
}

关于c++ - 没有匹配函数调用 ‘begin(int [n])’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51638149/

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