2014-11-08 40 views
1

通常的大小,我会用找到C中的数组++

int size = sizeof(array_name)/sizeof(double) 

但是发现双数组的大小,我使用名为“等级”作为一个类中的成员被称为双阵列“成绩”

class Grades{ 
    private: 
     double grades[1024]; 

    public: Grades(string gradeList); 
      Grades(); 

      int getNumGrades(); 
      string toString(); 
}; 

双数组稍后填充在构造函数中。然而,当我做

cout << "size = " << (sizeof(grades)/sizeof(double)) << endl; 

它总是给我1024.这是在它填充了一些随机值后的构造函数的末尾。我填充了5个值。我怎样才能让这个返回填充元素的数量?

+2

你可以用'的std ::矢量',避免跟踪添加和'double's数组去除所有的头痛。 – 2014-11-08 06:03:34

+0

总是要注意'sizeof'是编译时间定义的(很少发生异常,忽略)。因此,表达式将始终为'1024'(因为编译器已将'1024'放在那里!) – Ajay 2014-11-08 10:15:12

回答

2

我想你应该有一个叫elemInArray的其他成员,它可以用这种方式实现。

class Grades{ 
    private: 
     double grades[1024]; 
     unsigned int elemInArray; // Note this 

    public: Grades(string gradeList); 
      Grades(); 

      int getNumGrades(); 
      string toString(); 
}; 

,只要你插入的元素,或从数组中删除元素,你可以增加或减少elemInArray跟踪数组中元素的个数。

否则使用STL容器(http://en.cppreference.com/w/cpp/container)。

1

它将始终返回您创建数组时指定的值。你必须保持一个单独的变量(比方说“count”)来跟踪数组中有多少个元素。

-3
cout << "size = " << grades.size() 

请只需访问this link

+0

链接中显示的数组是类,因此array.size()是可能的。 – 2014-11-08 06:16:30