2014-11-08 95 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