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包含了标头,我想他们想用它代替C样式数组。@ LB——是的,但是我现在犹豫了,开始讨论这个问题了。Vlad的回答很好!我要提一下。回答很好,除了……为什么每个人都在推广这个
sizeof(ar)/sizeof(*ar)
garbage?相反,写一个函数模板,其专业化需要
const(&)[N]
和return
N
。你的
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()