数组大小成员函数编译错误

use*_*516 1 c++ arrays compiler-errors

使用此代码:

int myArray[10];
    for(int i = 0; i < myArray.size(); i++)
        cout << myArray[i] << endl;
Run Code Online (Sandbox Code Playgroud)

编译错误:

错误:在'myArray'中请求成员'size',这是非类型'int [10]'|

我必须遗漏一些明显的东西,但我没有看到它.

Jos*_*eld 5

数组类型不是类类型,也没有成员函数.所以数组没有调用的成员函数size.但是,由于数组具有编译时固定大小,因此您知道大小为10:

for(int i = 0; i < 10; i++)
    cout << myArray[i] << endl;
Run Code Online (Sandbox Code Playgroud)

当然,最好避免使用魔术数字,并将大小放在某处的命名常量中.或者,有一个标准库函数用于确定数组类型对象的长度:

for(int i = 0; i < std::extent(myArray); i++)
    cout << myArray[i] << endl;
Run Code Online (Sandbox Code Playgroud)

但是,您可以使用std::array它来封装数组类型对象,并提供size成员函数:

std::array<int, 10> myArray;
for(int i = 0; i < myArray.size(); i++)
    cout << myArray[i] << endl;
Run Code Online (Sandbox Code Playgroud)