2016-03-25 67 views
0

我想通過指定3D數組中的特定元素來檢索兩個變量(例如:var4和var5)。爲3D數組中的特定元素創建對象

我目前正在嘗試通過創建特定元素的對象,然後創建一個類,該類根據特定元素指定的對象檢索name4和name5的值。有什麼想法嗎?

+0

你必須使用一個類?和「檢索」意味着你需要一個get()函數以及set()用於「分配」 –

+0

int test_3D_array [rows] [columns] [depth];'不是標準的C++ ..考慮使用'std: :矢量',對於維度表示可能是最好的單個維度。 –

+0

從3d數組中檢索對象的值?我無法理解你太好。 – xinaiz

回答

1

你的3D容器應該是private。然後,您的set()函數將採取 ColumnDepth作爲參數以及要放在這些座標中的實際Valueindexes並將其設置在私有容器中。隨着set(),您需要另一個功能是get()get()也應該採用三個參數,即indexes,它會從您的私有容器中檢索值。

使用此示例的想法,你會看到會發生什麼。

set(row, column, depth, value); // can be void 
RetrievedValue = get(row, column, depth) // should return something 

這是使用std::vector工作代碼基本代碼:

#include <iostream> 
#include <vector> 

using namespace std; 

class Whatever 
{ 
private: 
    vector<vector<vector<int>>> MyVec; // 3D vector 

public: 
    Whatever(int RowSize, int ColumnSize, int DepthSize); // default constructor 
    int get(int Row, int Column, int Depth); 
    void set(int Row, int Column, int Depth, int Value); 

}; 

Whatever::Whatever(int RowSize, int ColumnSize, int DepthSize) 
{ 
    vector<int> TempDepth; 
    vector<vector<int>> TempColumn; 

    for (int i = 0; i < RowSize; i++) 
    { 
     for (int j = 0; j < ColumnSize; j++) 
     { 
      for (int k = 0; k < DepthSize; k++) 
      { 
       TempDepth.push_back(0); // add an integer zero to depth on every iteration 
      } 
      TempColumn.push_back(TempDepth); // add the whole depth to the column 
      TempDepth.clear(); // clear 
     } 
     this->MyVec.push_back(TempColumn); // add the whole column to the row 
     TempColumn.clear(); // clear 
    } 
} 


int Whatever::get(int Row, int Column, int Depth) 
{ 
    return this->MyVec[Row][Column][Depth]; // "get" the value from these indexes 
} 

void Whatever::set(int Row, int Column, int Depth, int Value) 
{ 
    this->MyVec[Row][Column][Depth] = Value; // "set" the Value in these indexes 

} 


int main() 
{ 
    int rowSize, columnSize, depthSize; 

    cout << "Please enter your desired row size, column size and depth size:\n"; 
    cin >> rowSize >> columnSize >> depthSize; 

    Whatever MyObjectOfClassWhatever(rowSize, columnSize, depthSize); // create a local object and send the sizes for it's default constructor 

    // let's say you need "set" a value in [2][4][1] 
    MyObjectOfClassWhatever.set(2, 4, 1, 99); 

    // now you want to "get" a value in [2][4][1] 
    int RetreivedData = MyObjectOfClassWhatever.get(2, 4, 1); // you get it from within the class and assign it to a local variable 

    // now you can do whatever you want 

    return 0; 
} 
+0

謝謝你的評論! FirstStep,你能給我一個更詳細的例子,說明我如何使用「set」和「get」?關於類,我很新(正如你可以從我的簡單代碼示例中得出的那樣),所以任何澄清都會很棒! – luke

+0

查看我編輯的帖子。一旦得到它,請在您的StackOverflow問題上將解決方案標記爲ANSWERS。 –