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()