std::initializer_list
De cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Defined in header <initializer_list>
|
||
| template< class T > class initializer_list; |
(ya que C + +11) | |
Un objeto de
std::initializer_list<T> tipo es un objeto proxy de peso ligero, que proporciona acceso a un conjunto de objetos de tipo T, asignada por la aplicación en el almacenamiento no especificado (que puede ser automática, temporal, o memoria estática de sólo lectura, en función de la situación )Original:
An object of type
std::initializer_list<T> is a lightweight proxy object, which provides access to an array of objects of type T, allocated by the implementation in unspecified storage (which could be automatic, temporary, or static read-only memory, depending on the situation)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Este array se inicializa y un objeto
std::initializer_list se construye cuando preparaba un-init-list se utiliza en lista de inicialización, incluyendo la inicialización lista de funciones de llamada y expresión de asignación (que no debe confundirse con constructor lista de inicialización), o cuando preparó-init-list está obligado a auto, incluido en un archivo. oscilaba bucle for .Original:
This array is initialized and a
std::initializer_list object is constructed when a braced-init-list is used in lista de inicialización, including function-call list initialization and assignment expression (not to be confused with constructor lista de inicialización), or when braced-init-list is bound to auto, including in a ranged for loop.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Initializer lista puede ser implementado como un par de punteros o punteros y longitud. Copia de un
std::initializer_list no copia los objetos subyacentes del matriz subyacente no se garantiza que existe después de la vida útil del objeto inicializador lista original ha terminado .Original:
Initializer list may be implemented as a pair of pointers or pointer and length. Copying a
std::initializer_list does not copy the underlying objects. The underlying array is not guaranteed to exist after the lifetime of the original initializer list object has ended.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[editar] Tipos de miembros
| Miembro de tipo
Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
value_type
|
T |
reference
|
const T& |
const_reference
|
const T& |
size_type
|
size_t |
iterator
|
const T* |
const_iterator
|
const T* |
[editar] Las funciones miembro
| crea una lista de inicializador vacías Original: creates an empty initializer list The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (miembro público función) | |
Original: Capacity The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| devuelve el número de elementos en la lista de inicialización Original: returns the number of elements in the initializer list The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (miembro público función) | |
Original: Iterators The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| devuelve un puntero al primer elemento Original: returns a pointer the first element The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (miembro público función) | |
| devuelve un puntero a un más allá del último elemento Original: returns a pointer to one past the last element The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (miembro público función) | |
[editar] Terceros funciones
| se especializa std::begin Original: specializes std::begin The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función de plantilla) | |
| se especializa std::end Original: specializes std::end The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función de plantilla) | |
[editar] Ejemplo
#include <iostream> #include <vector> #include <initializer_list> template<class T> struct S { std::vector<T> v; S(std::initializer_list<T> l) : v(l) { std::cout << "constructed with a " << l.size() << "-element list\n"; } void append(std::initializer_list<T> l) { v.insert(v.end(), l.begin(), l.end()); } std::pair<const int*, size_t> c_arr() const { return {&v[0], v.size()}; // list-initialization in return statement } }; template<typename T> void templated_fn(T) { } int main() { S<int> s = {1,2,3,4,5}; // direct list-initialization s.append({6,7,8}); // list-initialization in function call std::cout << "The vector size is now " << s.c_arr().second << " ints:\n"; for(auto n : s.v) std::cout << ' ' << n; std::cout << '\n'; std::cout << "range-for over brace-init-list: \n"; for(int x : {-1, -2, -3}) // the rule for auto makes this ranged for work std::cout << x << ' '; std::cout << '\n'; auto al = {10, 11, 12}; // special rule for auto std::cout << "The list bound to auto has size() = " << al.size() << '\n'; // templated_fn({1,2,3}); // compiler error! "{1,2,3}" is not an expression, // it has no type, and so T cannot be deduced templated_fn<std::initializer_list<int>>({1,2,3}); // OK templated_fn<std::vector<int>>({1,2,3}); // also OK }
Output:
The vector size is now 8 ints: 1 2 3 4 5 6 7 8 range-for over brace-init-list: -1 -2 -3 The list bound to auto has size() = 3