2012-12-06 25 views
5

मैं इस प्रकार एक कोड है:`एसटीडी के साथ बदलें` std :: vector` :: array`

int n; 

int get_the_number(); 
void some_computations(); 

int main() 
{ 
    n = get_the_number(); 
    some_computations() 

    return(0); 
} 
  • get_the_number समारोह कुछ इनपुट मिलता है और पूर्णांक n, रिटर्न जो अपने कॉल के बाद संशोधित नहीं किया जाएगा। के बाद से my_array का आकार एक प्रायोरी में जाना जाता है, यह एक std::array साथ std::vector को बदलने के लिए संभव है:

  • some_computation समारोह में निम्नलिखित कोड

    std::vector<my_struct> my_array; 
    
    for(int i=0; i<n; i++) 
    { 
        my_struct struct_temp; 
    
        // fill struct_temp; 
    
        my_array.push_back(struct_temp); 
    } 
    

प्रश्न है? इसके अलावा, सकारात्मक मामले में, क्या मुझे दक्षता के मामले में लाभ की उम्मीद करनी चाहिए?

मैं

std::array<my_struct,n> my_array; 

साथ वेक्टर घोषणा की जगह करने की कोशिश की, लेकिन मैं कोई त्रुटि मिलती है: सरणी के आकार निरंतर होना चाहिए। क्या इससे बचने का कोई तरीका है?

बहुत बहुत धन्यवाद।

उत्तर

संबंधित मुद्दे