範囲ベースのループを使用して、STL コンテナー内のアイテムの連続するペアをループするカスタム クラスを作成するにはどうすればよいですか?
これは私が望む構文と出力です:
std::list<int> number_list;
number_list.push_back(1);
number_list.push_back(2);
number_list.push_back(3);
auto paired_list = Paired(number_list);
for (const auto & pair : paired_list) {
std::printf("The pair is (%d, %d)\n", *(pair[0]), *(pair[1]));
// or
//std::printf("The pair is (%d, %d)\n", *(pair.first), *(pair.second));
}
// output:
// The pair is (1, 2)
// The pair is (2, 3)
これら(およびそれ以上)が必要であることは知っていますが、わかりません:
template <class T>
class Paired {
???
class iterator {
???
}
iterator begin() {
...
}
iterator end() {
...
}
}
const
修飾子について心配する必要はありません。
ブーストなし。
コンテナー内のオブジェクトを変更またはコピーしないでください。