我想通過指定3D數組中的特定元素來檢索兩個變量(例如:var4和var5)。爲3D數組中的特定元素創建對象
我目前正在嘗試通過創建特定元素的對象,然後創建一個類,該類根據特定元素指定的對象檢索name4和name5的值。有什麼想法嗎?
我想通過指定3D數組中的特定元素來檢索兩個變量(例如:var4和var5)。爲3D數組中的特定元素創建對象
我目前正在嘗試通過創建特定元素的對象,然後創建一個類,該類根據特定元素指定的對象檢索name4和name5的值。有什麼想法嗎?
你的3D容器應該是private
。然後,您的set()
函數將採取 Column
Depth
作爲參數以及要放在這些座標中的實際Value
或indexes
並將其設置在私有容器中。隨着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;
}
謝謝你的評論! FirstStep,你能給我一個更詳細的例子,說明我如何使用「set」和「get」?關於類,我很新(正如你可以從我的簡單代碼示例中得出的那樣),所以任何澄清都會很棒! – luke
查看我編輯的帖子。一旦得到它,請在您的StackOverflow問題上將解決方案標記爲ANSWERS。 –
你必須使用一個類?和「檢索」意味着你需要一個get()函數以及set()用於「分配」 –
int test_3D_array [rows] [columns] [depth];'不是標準的C++ ..考慮使用'std: :矢量',對於維度表示可能是最好的單個維度。 –
從3d數組中檢索對象的值?我無法理解你太好。 – xinaiz