Пространства имён
Варианты
Действия

std::initializer_list

Материал из cppreference.com
< cpp‎ | utility


 
 
 
std::initializer_list
Функции-члены
initializer_list::initializer_list
Потенциала
Оригинал:
Capacity
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
initializer_list::size
Итераторы
Оригинал:
Iterators
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
initializer_list::begin
initializer_list::end
Функции, не являющиеся членами
std::begin
std::end
 
Определено в заголовочном файле <initializer_list>
template< class T >
class initializer_list;
(начиная с C++11)
объект типа std::initializer_list<T> это легкий объект прокси-сервер, который обеспечивает доступ к массиву объектов типа T, выделенных реализации в неопределенных хранения (который может быть автоматическим, временные, или статический только для чтения памяти, в зависимости от ситуации )
Оригинал:
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)
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Этот массив инициализируется и std::initializer_list объект построен, когда приготовился-Init-лист используется в Список инициализации, в том числе вызова функции инициализации списка и выражения присваивания (не путать с инициализации конструктора списка), или когда приготовился-Init-лист связан с auto, в том числе в дальнюю цикла.
Оригинал:
This array is initialized and a std::initializer_list object is constructed when a braced-init-list is used in Список инициализации, including function-call list initialization and assignment expression (not to be confused with инициализации конструктора списка), or when braced-init-list is bound to auto, including in a ranged for loop.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Initializer список может быть реализован как пара указателей или указателя и длины. Копирование std::initializer_list не копирует основные объекты. основной массив не гарантирует существование после жизни оригинального объекта списке инициализаторов закончилось.
Оригинал:
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.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Типы-члены

Тип члена Определение
value_type T
reference const T&
const_reference const T&
size_type size_t
iterator const T*
const_iterator const T*

[править] Функции-члены

создает пустой список инициализации
Оригинал:
creates an empty initializer list
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
Потенциала
Оригинал:
Capacity
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
возвращает количество элементов в списке инициализаторов
Оригинал:
returns the number of elements in the initializer list
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
Итераторы
Оригинал:
Iterators
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
возвращает указатель на первый элемент
Оригинал:
returns a pointer the first element
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
возвращает указатель на следующий за последним элементом
Оригинал:
returns a pointer to one past the last element
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]

[править] Функции, не являющиеся членами

Специализируется std::begin
Оригинал:
specializes std::begin
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]
Специализируется std::end
Оригинал:
specializes std::end
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]

[править] Пример

#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
}

Вывод:

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