मैं लिख रहा हूं एक सुडोकू पहेली सॉल्वर के लिए स्याही के वैक्टरों के वैक्टरों के साथ काम करने की कोशिश कर रहा हूं।मैं सी ++ में नेस्टेड वैक्टर के साथ कैसे काम करूं?
प्रश्न 1:
मैं सूचकांक द्वारा एक मेरी 2d सदिश का उपयोग करने के लिए जा रहा हूँ, मैं उचित आकार पहले से यह प्रारंभ करने की क्या ज़रूरत है?
उदाहरण के लिए:
typedef vector<vector<int> > array2d_t;
void readAPuzzle(array2d_t grid)
{
for(int i = 0; i < 9; i++)
for(int j = 0; j < 9; j++)
cin >> grid[i][j];
return;
}
int main()
{
array2d_t grid;
readAPuzzle(grid);
}
फॉल्ट का होगा। मुझे लगता है कि ऐसा इसलिए है क्योंकि यह ग्रिड के elments तक पहुंचने का प्रयास कर रहा है जिसे अभी तक शुरू नहीं किया गया है?
मैं के साथ ग्रिड की घोषणा लाइन बदली है:
array2d_t grid(9, vector<int>(9, 0));
और यह इस SEG गलती से छुटकारा पाने के लिए लगता है। क्या इसे संभालने का यह सही तरीका है?
प्रश्न 2:
ऐसा क्यों है कि जब मैं CIN से मेरे ग्रिड में पढ़ने की कोशिश करें, और फिर बाहर ग्रिड प्रिंट, ग्रिड खाली है है?
मैं निम्नलिखित कोड का उपयोग कर रहा ऐसा करने के लिए:
void printGrid(array2d_t grid)
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
cout << grid[i][j] + " ";
}
cout << endl;
}
}
void readAPuzzle(array2d_t grid)
{
for(int i = 0; i < 9; i++)
for(int j = 0; j < 9; j++)
cin >> grid[i][j];
return;
}
int main()
{
array2d_t grid(9, vector<int>(9, 0));
printGrid(grid);
readAPuzzle(grid);
printGrid(grid);
}
और मैं तरह मेरे कार्यक्रम चलाने के लिए प्रयास:
./a.out < sudoku-test
कहाँ सुडोकू परीक्षण निम्नलिखित वाली फ़ाइल है:
3 0 0 0 0 0 0 0 0
5 8 4 0 0 2 0 3 0
0 6 0 8 3 0 0 7 5
0 4 1 0 0 6 0 0 0
7 9 0 0 2 0 0 5 1
0 0 0 9 0 0 6 8 0
9 3 0 0 1 5 0 4 0
0 2 0 4 0 0 5 1 8
0 0 0 0 0 0 0 0 6
printGrid() के लिए पहली कॉल जब बजाय मैं का एक 9x9 ग्रिड को देखकर किया जाना चाहिए एक खाली ग्रिड, देता है 0 के बाद से मैंने इसे कैसे शुरू किया। दूसरी कॉल में ऊपर ग्रिड होना चाहिए। हालांकि, दोनों बार यह खाली है।
क्या कोई इस पर कुछ प्रकाश डाल सकता है?
चेकआउट boost.multi_array अगर आप गतिशील बहुआयामी डेटा – Anycorn