नहीं है, लेकिन यह क्या std::generate
के लिए है।
लक्ष्य मूल्य में प्रतिलिपि बनाई गई एक एकल मान देने के बजाय, std::generate
को "जनरेटर" फ़ंक्शन दिया जाता है जो प्रत्येक मान को आवश्यकतानुसार बनाता है।
तो, शायद, कुछ इस तरह:
std::unique_ptr<int> ar[3];
std::generate(
std::begin(ar),
std::end(ar),
[]() { return std::make_unique<int>(1); }
);
मैं इसे करने की कोशिश नहीं की है, और नहीं जानता कि क्या आप सब पर क्रम गैर copyability से उत्पन्न समस्याओं से बचने के लिए इसके साथ बेला की जरूरत है । उम्मीद है कि semantics ले जाएँ पर्याप्त हैं।
(बेशक, सी ++ 11 में, आप your own make_unique
function की आवश्यकता होगी।)
वैसे, अपने .begin()
और .end()
गलत थे (सरणियों सदस्य कार्यों की जरूरत नहीं है), तो (एक चेतावनी के लिए धन्यवाद songyuanyao से) मैंने उनको सही किया है।
स्रोत
2016-12-28 16:01:39
'है std :: एक साथ array' 'std :: startizer_list' एक विकल्प? –
'std :: array' एक विकल्प है लेकिन इरादा एक ही भरने वाले तत्व को दोहराना नहीं है 'एन' टाइम्स – Danra
इसलिए मैंने' std :: startizer_list' (या बस '{}' प्रारंभिकरण) का प्रस्ताव दिया है। –