C++ C+上的数组错误大小+;
我正在尝试获取数组大小,但出现错误。我的代码是:C++ C+上的数组错误大小+;,c++,C++,我正在尝试获取数组大小,但出现错误。我的代码是: #include <iostream> #include <array> using namespace std; int main () { int myarray[5]; cout << "size of array: " << myarray.size() << endl; cout << "sizeof array: " << sizeof(m
#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;
}
#包括
#包括
使用名称空间std;
int main()
{
int-myarray[5];
cout了解编译器给您带来的错误很重要,这里的意思是:
错误:“myarray”中的成员“size”请求,该成员属于非类类型“int[5]”|
这意味着您试图执行myarray.size
但myarray
不是一个类,而是一个int[5]
这不是Java,数组没有size
方法。
相反,您可以使用sizeof
获取原始大小(以字节为单位),并使用std::extent::value
(在header
中)获取元素数
请注意,正如Vlad所提到的,您需要使用一个实际的std::array
来拥有一个size函数,这与您使用的原始数组不同,并且可能是您想要的。数组没有成员函数,因为它们不是类。但是如果您要使用std::array
则可以使用成员函数尺寸
比如说
#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;
}
注意标题中声明的标准类std::extent
使用:
(sizeof(myarray)/sizeof(*myarray))
而不是:
myarray.size()
<> > C++中的数组不是具有成员函数的类。如果你想要一个类,考虑使用STL类向量。< /p> @ SeunuHLMman,我窃取你的评论,如果你不介意的话,OP包含了
sizeof(ar)/sizeof(*ar)
garbage?相反,写一个函数模板,其专业化需要const(&)[N]
和returnN
。你的sizeof
技巧非常容易出错,特别是对于语言新手来说,他们可能没有意识到数组名称何时发生衰退。@LightningRacisinObrit True。虽然模板语法可能也会让新手感到困惑。我想我应该只使用std::array
。我知道我看到了一个问题n在过去一两周内就这样。为什么#include
,然后不使用std::array
?如果你不喜欢用C-way获取大小,为什么要使用C-style数组?std::array
,std::vector
,std::valarray
,所有这些都有size(),也涉及到在哪里你可以在数组中听到<代码> siz()/>代码?“C++中的数组不是带成员函数的类”。
(sizeof(myarray)/sizeof(*myarray))
myarray.size()