我可以使用std::initializer_list
對象而不是大括號初始化程序來初始化數組嗎?我可以初始化一個數組使用std :: initializer_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;
來初始化一個數組?
複製..「duped」是關於使用'{..}'初始化成員數組的一般問題。這個問題使用'std :: initializer_lists'來初始化'std ::'類型(不允許更改!)。他們是完全不同的問題。 –
@Alex不能使用'algorithm'中的'copy'([示例](https://godbolt.org/g/cKiBNg))? – skypjack