इसे एक बहुआयामी वेक्टर के रूप में न सोचें, इसे वैक्टरों के वेक्टर के रूप में सोचें।
int n = 4;
std::vector<std::vector<int>> vec(n, std::vector<int>(n));
// looping through outer vector vec
for (int i = 0; i < n; i++) {
// looping through inner vector vec[i]
for (int j = 0; j < n; j++) {
(vec[i])[j] = i*n + j;
}
}
मैंने समझने के लिए (vec[i])[j]
में ब्रांड्स शामिल किए।
संपादित करें:
आप push_back
के माध्यम से अपने वेक्टर भरना चाहते हैं, तो आप, भीतरी पाश में एक अस्थायी वेक्टर बना सकते हैं इसे भरने, और फिर अपने वेक्टर के लिए यह push_back:
for (int i = 0; i < n; i++) {
std::vector<int> temp_vec;
for (int j = 0; j < n; j++) {
temp_vec.push_back(j);
}
vec.push_back(temp_vec);
}
हालांकि, push_back
कॉल का परिणाम धीमा कोड है, क्योंकि न केवल आपको अपने वेक्टर को फिर से आवंटित करने की आवश्यकता है, बल्कि आपको अस्थायी बनाना और इसकी प्रतिलिपि बनाना है।
यह वैक्टर के अंत से परे लेखन का प्रयास करेगा। – interjay
तत्वों को आरक्षित करके, मैं मूल्यों को पारित करने के लिए [] [] विधि का उपयोग कर सकता हूं, लेकिन चूंकि बहुत सारे अवांछित आवंटन थे, इसलिए मैं केवल पुशबैक का उपयोग करना चाहता था और आवश्यकता होने पर मूल्यों को सम्मिलित करना चाहता था, मैं यह कैसे कर सकता हूं? –
@interjay: क्षमा करें, किसी कारण से मैंने सोचा कि वेक्टर पहले ही ठीक से आकार बदल चुके हैं। – prazuber