Skip to content

C++|範囲for文

範囲for文(range-based for)でインデックスを使いたい

boost::adaptors::indexedを使う

#include <boost/range/adaptor/indexed.hpp>
for (const auto & e : elements | boost::adaptors::indexed()) {
    std::cout << e.index() << ":" << e.value() << std::endl;
}

range-v3ライブラリを使う

#include <range/v3/view/enumerate.hpp>
for (const auto & [index, value] : elements | ranges::views::enumerate) {
    std::cout << index << ":" << value << std::endl;
}

C++20以降で書ける方法

for (size_t index = 0; const auto & e: elemnets) {
    std::cout << index << ":" << value << std::endl;
    ++index;
}

範囲for文の型の使い方

基本的にはユニバーサル参照 auto && を使う

for(auto && e : elements){}

配列に操作を加えない時はconst参照 const auto & を使う

for(const auto & e : elements){}