我正在尝试获取数组大小,但出现错误。我的代码是:
#include <iostream>
#include <array>
using namespace std;
int main ()
{
int myarray[5];
cout << "size of array: " << myarray.size() << endl;
cout << "sizeof array: " << sizeof(myarray) << endl;
return 0;
}
这是我遇到的错误:
error: request for member 'size' in 'myarray', which is of non-class type 'int [5]'|
数组没有成员函数,因为它们不是类。但是如果你使用 std::array
那么你可以使用成员函数 size
例如
#include <iostream>
#include <array>
using namespace std;
int main ()
{
std::array<int, 5> myarray;
cout << "size of array: " << myarray.size() << endl;
cout << "sizeof array: " << sizeof(myarray) << endl;
return 0;
}
如果你确实想处理一个数组,那么程序可以像下面这样
#include <iostream>
#include <type_traits>
int main()
{
int myarray[5];
std::cout << "sizeof myarray: "
<< sizeof( myarray ) << std::endl;
std::cout << "size of myarray: "
<< sizeof( myarray ) / sizeof( *myarray ) << std::endl;
std::cout << "size of myarray: "
<< std::extent<decltype( myarray )>::value << std::endl;
return 0;
}
程序输出为
sizeof myarray: 20
size of myarray: 5
size of myarray: 5
关注标准类std::extent
在 header 中声明 <type_traits>