我正在尝试获取数组大小但我收到错误。我的代码是:
#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;
}
这就是我得到的错误:
错误:请求会员&#39;尺寸&#39;在&#39; myarray&#39;,这是非类型的&#39; int [5]&#39; |
答案 0 :(得分:10)
数组没有成员函数,因为它们不是类。但是,如果您使用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
<type_traits>
答案 1 :(得分:8)
尝试理解编译器给你的错误很重要,这里是说:
错误:请求'myarray'中的成员'size',这是非类型'int [5]'|
这意味着您尝试myarray.size
,但myarray
不是一个类,而是int[5]
。
这不是Java,数组没有size
方法。
相反,您可以使用sizeof
以字节为单位获取原始大小,并使用std::extent<decltype(myarray)>::value
(在标题<type_traits>
中)获取元素数。
请注意,如Vlad所述,您需要使用实际的std::array
来设置大小函数,这与您使用的原始数组不同,可能与您想要的不同。
答案 2 :(得分:0)
C ++中的数组不是具有成员函数的类。如果需要类,请考虑使用STL类向量。
答案 3 :(得分:-1)
使用:
(sizeof(myarray)/sizeof(*myarray))
而不是:
myarray.size()