Использование '{}' в качестве конечного итератора в конструкторе std :: vector - PullRequest
1 голос
/ 23 октября 2019

Способ чтения файла и помещения его в виде байтового массива в вектор:

std::ifstream input(filePath, std::ios::binary);
std::vector<unsigned char> barray(std::istreambuf_iterator<char>(input), {});

Насколько я понимаю, конструктор, используемый для std::vector в приведенном выше фрагменте кода:

template< class InputIt >
vector( InputIt first, InputIt last,
        const Allocator& alloc = Allocator() );

Таким образом, {} соответствует last.

Что именно {}? Это действует как пустой / пустой итератор?

1 Ответ

5 голосов
/ 23 октября 2019

Таким образом, {} соответствует последнему.
Что именно {}? Он действует как пустой / пустой итератор?

Это созданный по умолчанию объект типа std::istreambuf_iterator<char>.

std::vector<unsigned char> barray(std::istreambuf_iterator<char>(input), {});

совпадает с

std::vector<unsigned char> barray{std::istreambuf_iterator<char>{input},
                                  std::istreambuf_iterator<char>{}};
...