Какой самый идиоматичный способ создания диапазона индексов из контейнера? - PullRequest
0 голосов
/ 12 октября 2018

Есть ли лучший способ перебора индексов контейнера, чем делать что-то вроде этого

for (auto i : view::iota(0, vec.size())

В идеале что-то, что выглядело бы так же, как это view::something(vec).

Я понимаюЯ могу написать свою собственную функцию для этого, но мне было интересно, если эта функция уже существует.Я также осознаю, что могу сделать что-то подобное

for (auto [idx, elm] : view::zip(view::indices, vec))

После некоторого изучения кода мне стало известно, что я могу написать это вместо view::indices(vec.size()), хотя даже indicesptrdiff_t по умолчанию, использование size() приводит к получению size_t, и я бы предпочел оставить ptrdiff_t.

1 Ответ

0 голосов
/ 12 октября 2018

Если вам нужны только индексы, то с вашим первым все в порядке.

Также есть старшее (но не менее хорошее)

for (auto i = 0; i < vec.size(); ++i)

Если вытакже нужны элементы, тогда ваш второй превосходит.

...