为什么我遇到这个错误:请求成员“尺寸”在“arr”中,它是非类类型“int [n]”; for(int j=arr.size()-1; j>=0; j--){

发布于 2025-01-13 16:48:17 字数 663 浏览 0 评论 0原文

我面临一个错误:

请求arr中非类类型的成员大小

我无法弄清楚发生了什么。

#include <iostream>
#include <vector>


using namespace std;
// reversing an array;`

int main(){
    int n, a;
    std::vector<int> vect;
    cout << "enter size: ";
    cin >> n;

    int arr[n];
    cout << "enter numbers in array ---> " << endl;
    for(int i=0; i<n; i++){
        cin >> arr[i];
    }

    //logic to reverse

    for(int j=arr.size()-1; j>=0; j--){
        a = arr[j];
        vect.push_back(a);
    }

    for(int k=0; k<n; k++){
        cout << vect[k];
    }
}

I am facing an error:

request for member size in arr which is of non class type

I could not figure out what is happening.

#include <iostream>
#include <vector>


using namespace std;
// reversing an array;`

int main(){
    int n, a;
    std::vector<int> vect;
    cout << "enter size: ";
    cin >> n;

    int arr[n];
    cout << "enter numbers in array ---> " << endl;
    for(int i=0; i<n; i++){
        cin >> arr[i];
    }

    //logic to reverse

    for(int j=arr.size()-1; j>=0; j--){
        a = arr[j];
        vect.push_back(a);
    }

    for(int k=0; k<n; k++){
        cout << vect[k];
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

兔姬 2025-01-20 16:48:17

我不认为数组类型具有函数大小
你可以使用向量代替 arr(向量 arr(n,0) )

I don't think array type has the function size
you can probably use vector instead of arr( vector arr(n,0) )

金橙橙 2025-01-20 16:48:17

内置数组没有 .size() 成员函数。如果您愿意,则需要使用数组头文件中的数组。但您可以使用 for(int j=n-1; j>=0; j--){

这是您的解决方案:

    #include<iostream>
    #include <vector>
    
    
    using namespace std;
    // reversing an array;`
    
    int main(){
        int n, a;
        std::vector<int> vect;
        cout << "enter size: ";
        cin >> n;
    
        int arr[n];
        cout << "enter numbers in array ---> " << endl;
        for(int i=0; i<n; i++){
            cin >> arr[i];
        }
    
       //logic to reverse
    
        for(int j=n-1; j>=0; j--){
            a = arr[j];
            vect.push_back(a);
        }
    
        for(int k=0; k<n; k++){
            cout << vect[k];
        }
    }

The built in array does not have a .size() member function. If you wanted that you would need to use the array in the array header file. But instead you could use for(int j=n-1; j>=0; j--){.

This is your solution:

    #include<iostream>
    #include <vector>
    
    
    using namespace std;
    // reversing an array;`
    
    int main(){
        int n, a;
        std::vector<int> vect;
        cout << "enter size: ";
        cin >> n;
    
        int arr[n];
        cout << "enter numbers in array ---> " << endl;
        for(int i=0; i<n; i++){
            cin >> arr[i];
        }
    
       //logic to reverse
    
        for(int j=n-1; j>=0; j--){
            a = arr[j];
            vect.push_back(a);
        }
    
        for(int k=0; k<n; k++){
            cout << vect[k];
        }
    }
奶茶白久 2025-01-20 16:48:17

对于初学者来说,可变长度数组不是标准的 C++ 功能。并且在代码中声明了一个可变长度数组:

cout << "enter size: ";
cin >> n;

int arr[n];

其次,数组不是类。他们没有成员函数。所以表达式arr.size()是不正确的。

如果编译器支持在头 中为可变长度数组声明的函数 std::size(),则可以使用表达式 std:: size(arr) 而不是 arr.size()

不过,您可以编写以下代码来代替 for 循环:

#include <iterator>

//...

vect.assign( std::rbegin( arr ), std::rend( arr ) );

For starters, variable length arrays are not a standard C++ feature. And a variable length array is declared in your code:

cout << "enter size: ";
cin >> n;

int arr[n];

Secondly, arrays are not classes. They do not have member functions. So the expression arr.size() is incorrect.

If the compiler supports the function std::size() declared in the header <iterator> for variable length arrays, you could use the expression std::size(arr) instead of arr.size().

Though, instead of the for loop, you could just write:

#include <iterator>

//...

vect.assign( std::rbegin( arr ), std::rend( arr ) );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文