2016-11-24 96 views
0

我是C++的初學者,我被困在這個問題上C++類,對象和內存管理

使用適當的文件結構,創建一個名爲「Matrix」的類。這個類應該有:(1)一個私有的二維容器,包含std :: array類型的浮點數;(2)一個方法,用一個作爲參數傳入的浮點數填充2D容器的所有元素;(3)以適當的2D格式打印出容器的內容,以及(4)容器各個元素的getter/setter方法。對於(4),確保您測試出界限請求。在主要功能中使用合適的代碼進行測試。

class Matrix 
{ 
private: 
    std::array<std::array<float, 3>, 3> arr = { { { 5, 8, 2 },{ 8, 3, 1 },{ 5, 3, 9 } } }; 
public: 
    void display(); 

}; 
int main() 
{ 
    Matrix Matrixclass; 
    Matrixclass.display(); 

    return 0; 
} 
void Matrix::display() 
{ 
    cout << "Values inside the container: " << endl; 

    for (int i = 0; i < 3; i++)    //rows 
    { 
     for (int j = 0; j < 3; j++)   //columns 
     { 
      std::cout << arr[i][j] << " "; 
     } 
     std::cout << std::endl; 
    } 
} 

我在正確的軌道上嗎?乾杯。

+1

一切是否按預期工作?所以你可能是。 –

+0

這取決於你在哪個軌道上。顯然,通向翡翠城的賽道將是正確的賽道,但是以無底深淵陷入終點的賽道將是錯誤的賽道。只有你知道你在哪個軌道上...... –

+1

顯然,代碼在某處使用了'namespace std;'。這絕對是錯誤的。將標準庫放入自己的名稱空間有很好的理由,吹走名稱空間不是一個好主意。另外,除非你需要額外的東西,否則不要使用'std :: endl'; ''\ n''結束一行。 –

回答

0

std :: array是一個固定大小的數組。除非你只是想實現一個3乘3的矩陣。如果你打算在未來有更多的維度矩陣,使用std :: vector可能是一個更好的選擇。確保你做尺寸驗證。

另一個選擇是使用模板,它可以讓你靈活地有其他類型的矩陣。