错误:请求"数据"中的成员"大小",其非类类型为"int [5]"

error: request for member 'size' in 'data', which is of non-class type 'int [5]'

本文关键字:类型 int 数据 请求 大小 成员 错误      更新时间:2023-10-16
#include <iostream>
using namespace std;
int main(){
    int data[] = {3,6,7,8,9};
    for(int i = 0; i < data.size(); i++){
            data[i] = i * i;
    }
    for (int i=0; i<data.size(); i++){
            cout << data[i] <<endl;
    }
}

您好,我正在使用我的C++程序练习数组操作。但是我收到错误消息,我无法弄清楚原因:

错误:请求"数据"中的成员"大小",其非类类型为"int [5]">

所以任何人都可以帮助澄清这一点?谢谢。

您使用的是普通的旧数组,它没有任何函数。

您应该切换到 std::arraystd::vector ,您可以在其中使用成员函数size()

std::array<int, 5> data = { 3, 6, 7, 8, 9};
std::vector<int> data = { 3, 6, 7, 8, 9};

您需要分别#include <array>#include <vector>

感谢评论中的@Galik,如果您使用的是 C++17 或更高版本,您还可以使用适用于数组的std::size,以及 vectorarray 等 std 容器:

int data[] = {3,6,7,8,9};
for(int i = 0; i < std::size(data); i++)

或者,当您不需要索引时,您可以在当前数组上使用 for ranged 循环,例如打印它时:

int data[] = {3,6,7,8,9};
for (auto i : data)
    std::cout << i << " ";

打印3 6 7 8 9