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){}