C++ 在C+中查找数组的大小+;
通常,我会使用C++ 在C+中查找数组的大小+;,c++,arrays,size,sizeof,C++,Arrays,Size,Sizeof,通常,我会使用 int size = sizeof(array_name)/sizeof(double) 但是,我使用名为“grades”的双数组作为名为“grades”的类中的成员 随后在构造函数中填充双数组。然而,当我 cout << "size = " << (sizeof(grades)/sizeof(double)) << endl; cout它将始终返回与创建数组时指定的值相同的值。您必须维护一个单独的变量(比如“count”),以跟踪数组中有
int size = sizeof(array_name)/sizeof(double)
但是,我使用名为“grades”的双数组作为名为“grades”的类中的成员
随后在构造函数中填充双数组。然而,当我
cout << "size = " << (sizeof(grades)/sizeof(double)) << endl;
cout它将始终返回与创建数组时指定的值相同的值。您必须维护一个单独的变量(比如“count”),以跟踪数组中有多少个元素。我认为您应该有另一个名为elemInArray
的成员,它可以通过这种方式实现
class Grades{
private:
double grades[1024];
unsigned int elemInArray; // Note this
public: Grades(string gradeList);
Grades();
int getNumGrades();
string toString();
};
无论何时插入元素或从该数组中删除元素,都可以递增或递减elemInArray
,以跟踪数组中的元素数
否则,请使用STL容器()。您可以使用std::vector
并避免从double
s数组中跟踪添加和删除的所有麻烦。请始终注意,sizeof
是编译时定义的(存在罕见的异常,忽略该异常)。因此,表达式将始终是1024
(因为编译器已将1024
放在那里!),链接中显示的数组是一个类,因此可以使用array.size()。
class Grades{
private:
double grades[1024];
unsigned int elemInArray; // Note this
public: Grades(string gradeList);
Grades();
int getNumGrades();
string toString();
};
cout << "size = " << grades.size()