Pierwsza część:Jaka jest podstawowa struktura std :: initializer_list?
std::initializer_list
jest bardzo pomocna funkcja C++ 11, więc zastanawiałem się, jak to jest realizowane w bibliotece standardowej. Z tego, co przeczytałem here, kompilator tworzy tablicę typu T
i podaje wskaźnik do initializer_list<T>
.
Podaje również, że skopiowanie initializer_list
utworzy nowy obiekt, odwołujący się do tych samych danych: dlaczego tak jest? Chciałbym się domyślić, że albo:
- kopiuje dane dla nowego
initializer_list
- porusza własności danych do nowej
initializer_list
część druga:
z Just jeden z wielu referencji online dla konstruktorów std::vector
:
vector (initializer_list<value_type> il,
const allocator_type& alloc = allocator_type());
(6) lista inicjator konstruktor
konstruktów pojemniku kopię każdego z elementów IL, w tej samej kolejności.
nie jestem wygodne z semantyki move jeszcze, ale nie mógł dane il
zostać przeniesione do vector
? Nie jestem świadomy głębokiej implementacji std::vector
, ale IIRC używa zwykłych tablic.
Wydaje się, że to kolejny powód, by nie ufać cplusplus.com. Wchodząc do standardu, w końcu przybywa do citor inicjalizatora wywołując ctor-iteratorów ctor, który (wykorzystując konstrukcję emues) przeniesie elementy, jeśli to możliwe. – Angew
cplusplus.com to okropna, straszna strona, która szkodzi społeczności C++. Ktoś powinien zniszczyć serwery, które go hostują, spalić dyski twarde, zamknąć je w betonie i zatopić na dnie oceanu. –
'Jaka jest podstawowa struktura std :: initializer_list?' Oddalona od ciebie, nie bez powodu. –