C++11 が範囲ベースの for ループ ( c++11の範囲ベースの for ) を導入して以来、整数の範囲でループを表現する最も適切な方法は何ですか?
それ以外の
for (int i=0; i<n; ++i)
のようなものを書きたいと思います
for (int i : range(0,n))
新しい標準はそのようなものをサポートしていますか?
更新: この記事では、C++ 11 で範囲ジェネレーターを実装する方法について説明します: C++ のジェネレーター
C++11 が範囲ベースの for ループ ( c++11の範囲ベースの for ) を導入して以来、整数の範囲でループを表現する最も適切な方法は何ですか?
それ以外の
for (int i=0; i<n; ++i)
のようなものを書きたいと思います
for (int i : range(0,n))
新しい標準はそのようなものをサポートしていますか?
更新: この記事では、C++ 11 で範囲ジェネレーターを実装する方法について説明します: C++ のジェネレーター
C++11 では提供されていませんが、独自のビューを作成するか、boost のビューを使用できます。
#include <boost/range/irange.hpp>
#include <iostream>
int main(int argc, char **argv)
{
for (auto i : boost::irange(1, 10))
std::cout << i << "\n";
}
さらに、Boost.Range
いくつかの興味深い範囲が含まれており、新しいfor
ループと組み合わせると非常に便利です。たとえば、逆のビューを取得できます。
最もきちんとした方法はまだこれです:
for (int i=0; i<n; ++i)
私はあなたがこれを行うことができると思いますが、私はそれをそれほどきちんとしたものとは呼びません:
#include <iostream>
int main()
{
for ( auto i : { 1,2,3,4,5 } )
{
std::cout<<i<<std::endl;
}
}
整数で何をしなければならないかに応じて、ヘッダーも考慮してください。<numeric>
特に
std::iota
、場合によってはヘッダーも考慮してください。std::transform
std::fill