क्या मैं ब्रेस-संलग्न प्रारंभकर्ता के बजाय std::initializer_list
ऑब्जेक्ट का उपयोग करके सरणी प्रारंभ कर सकता हूं?क्या मैं ब्रेस-संलग्न प्रारंभकर्ता के बजाय std :: startizer_list का उपयोग करके एक सरणी प्रारंभ कर सकता हूं?
में जाना जाता है के रूप में, हम यह कर सकते हैं: http://en.cppreference.com/w/cpp/language/aggregate_initialization
unsigned char b[5]{"abc"};
// equivalent to unsigned char b[5] = {'a', 'b', 'c', '\0', '\0'};
int ar[] = {1,2,3};
std::array<int, 3> std_ar2{ {1,2,3} }; // std::array is an aggregate
std::array<int, 3> std_ar1 = {1, 2, 3};
लेकिन मैं std::initializer_list il;
द्वारा एक सरणी प्रारंभ नहीं कर सकते हैं:
#include <iostream>
#include <initializer_list>
#include <array>
int main() {
int arr1[] = { 1, 2, 3 }; // OK
std::array<int, 3> arr2 = { 1, 2, 3 }; // OK
std::initializer_list<int> il = { 1, 2, 3 };
constexpr std::initializer_list<int> il_constexpr = { 1, 2, 3 };
//int arr3[] = il; // error
//int arr4[] = il_constexpr; // error
//std::array<int, 3> arr5 = il; // error
//std::array<int, 3> arr6 = il_constexpr; // error
return 0;
}
लेकिन यह कैसे मैं करने के लिए उपयोग कर सकते हैं std::initializer_list il;
एक सरणी शुरू करें?
दोबारा शुरू किया गया .. "डुप्ड" एक सदस्य सरणी के प्रारंभिककरण के बारे में एक सामान्य प्रश्न था {{}} '। यह 'std :: startizer_lists' का उपयोग करके 'std ::' प्रकार (इसमें कोई बदलाव नहीं है!) प्रारंभ करने के लिए कहता है। वे बहुत अलग प्रश्न हैं। –
@Alex क्या आप 'एल्गोरिदम '([उदाहरण] (https://godbolt.org/g/cKiBNg) से' प्रतिलिपि 'का उपयोग नहीं कर सकते हैं? – skypjack