2012-10-29 10 views
20

एक निश्चित आकार के साथ वेक्टर का एक वेक्टर के बाद,आरंभ किया जा रहा बढ़ावा साथ एक निश्चित आकार होने वैक्टर का एक वेक्टर आवंटित

vector<vector<int> > v(10); 

इतना है कि यह साथ सभी तत्वों में एक एक आयामी वेक्टर है मैं इसे प्रारंभ करने में चाहते हैं प्रारंभिक मान (उदाहरण के लिए 1)।

रूप

v= repeat(10,list_of(list_of(1))); 

इस प्रकार मैं बूस्ट असाइन का इस्तेमाल किया है और मैं एक संकलन त्रुटि

error: no matching function for call to ‘repeat(boost::assign_detail::generic_list<int>)’ 

आप कृपया मुझे बताओ कैसे करने के लिए किया जा सका है। अग्रिम धन्यवाद

उत्तर

27

यह boost::assign उपयोग नहीं करता है, लेकिन आप क्या जरूरत है:

vector<vector<int> > v(10, vector<int>(10,1)); 

यह int के 10 वेक्टर युक्त एक वेक्टर बनाता है, जिसमें प्रत्येक 10 ints होता है।

17

आपको आवश्यक व्यवहार के लिए boost का उपयोग करने की आवश्यकता नहीं है। निम्नलिखित 1 के एक मूल्य के साथ 10vector<int> रों की एक vector बनाता है, प्रत्येक vector<int> युक्त 10int रों साथ:

std::vector<std::vector<int>> v(10, std::vector<int>(10, 1)); 
+2

यह पहली उत्तर पोस्ट, यह सबसे अच्छा जवाब है, और अभी तक यह न तो स्वीकार कर लिया है और न ही इस सवाल का जवाब सबसे अप मतदान है था एक। आह। जीवन उचित नहीं है। – dbliss

+0

मुझे लगता है कि ऐसा इसलिए है क्योंकि इसे '>>' i.e '>' के बीच में अंतरिक्ष के बिना मिला है: p – krozaine

4

मैं इसे सी ++ के लिए नए लोगों को समझाऊंगा। verctors mat का एक वेक्टर लाभ यह है कि आप [] ऑपरेटर का उपयोग सीधे लगभग बिना किसी लागत के उसके तत्वों का उपयोग कर सकते ..

int n(5), m(8); 
vector<vector<int> > mat(n, vector<int>(m)); 

mat[0][0] =4; //direct assignment OR 

for (int i=0;i<n;++i) 
    for(int j=0;j<m;++j){ 
     mat[i][j] = rand() % 10; 
    } 

बेशक यह एक ही रास्ता नहीं है। और यदि आप तत्वों को जोड़ या निकालना नहीं चाहते हैं, तो मूल देशी कंटेनर mat[] का भी उपयोग कर सकते हैं जो पॉइंटर्स से अधिक कुछ नहीं हैं। यहाँ मेरे fav तरीका है, सी ++ का उपयोग करते हुए:

int n(5), m(8); 
int *matrix[n]; 
for(int i=0;i<n;++i){ 
    matrix[i] = new int[m]; //allocating m elements of memory 
    for(int j=0;j<m;++j) matrix[i][j]= rand()%10; 
} 

इस तरह, आप #include <vector> उपयोग करने के लिए नहीं है। उम्मीद है, यह स्पष्ट है!

0
#include <vector> 
#include <iostream> 
using namespace std; 


int main(){ 
    int n; cin >> n; 
    vector<vector<int>> v(n); 
    //populate 
    for(int i=0; i<n; i++){ 
     for(int j=0; j<n; j++){ 
      int number; cin >> number; 
      v[i].push_back(number); 
     } 
    } 
    // display 
    for(int i=0; i<n; i++){ 
     for(int j=0; j<n; j++){ 
      cout << v[i][j] << " "; 
     } 
     cout << endl; 
    } 
} 

इनपुट:

4 
11 12 13 14 
21 22 23 24 
31 32 33 34 
41 42 43 44 

आउटपुट:

11 12 13 14 
21 22 23 24 
31 32 33 34 
41 42 43 44 
संबंधित मुद्दे