MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiからアドホック範囲ヘルパーの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。
アドホック範囲ヘルパー
Raymond Chen、2 Jun 2019/6/2、リビジョン2個
アドホック範囲ヘルパーは範囲for
文(range-based for
loop)の作成を補助します。
使い方
アドホック範囲ヘルパーはwil/common.h
に定義されています。
#include <wil/common.h>
wil::make_range
template<typename T> auto make_range(T begin, T end); // (1) template<typename T> auto make_range(T begin, size_t count); // (2)
make_range
関数は範囲for
で使えるヘルパーオブジェクト(不特定型)を返します。
T
- (1) 入力イテレーターの要件を満たす型。
- (2) ランダムアクセスイテレーターの要件を満たす型。実際には普通はポインタ型。
(1)は範囲[begin, end)
をイテレートします。
(2)は範囲[begin, begin + count]
をイテレートします。
不特定型は次のメソッドを持ちます。
T begin()
はbegin
を返します。T end()
は(1)でend
、(2)でbegin + count
を返します。
例
std::vector<int> data = { 1, 1, 2, 3, 3, 4, 5, 5, 6 }; auto lower = std::lower_bound(data.begin(), data.end(), 2); auto upper = std::upper_bound(data.begin(), data.end(), 4); // 2 3 3 4の出力 for (auto& value : wil::make_range(lower, upper)) { std::cout << value << " "; } int array[] = { 1, 2, 3, 4, 5 }; // 2 3 4の出力 for (auto& value : wil::make_range(&array[1], 3)) { std::cout << value << " "; }
著作権表示
この記事は以下の著作物を使用しています。
Copyright (c) Microsoft Corporation. All rights reserved. https://github.com/microsoft/wil/blob/master/LICENSE