Bagaimana cara mengulang std :: set berdasarkan offset dari set.begin ()?
Saya perlu mendapatkan iterator berdasarkan offset.
yaitu memiliki iterator untuk memulai:
auto it = set.begin()
Saya perlu menuju ke iterator yang memiliki offset ofst
:
it + ofst
Apakah ada cara untuk melakukannya? dari saya perlu peningkatan tambahan it++
waktu iterator ofst
.
Jawaban
Aku harus pergi ke iterator setelah diimbangi
ofst
:it + ofst
: apakah ada cara untuk melakukan itu?
Tidak, tidak ada operator+
kelebihan beban yang ditentukan untuk ini std::set::iterator
(alias iterator dua arah ). Namun, Anda dapat menggunakan std::next, dari
#include <iterator> // std::next
auto nthIter = std::next(it, ofst);
Ini pada dasarnya juga meningkatkan ofst
waktu di belakang layar .
The std::set
memiliki iterator dua arah , yang tidak memiliki kemewahan seperti iterator random access , dan karenanya perlu peningkatan seperti ini.
Karena itu, Anda bisa membebani operator+
(dan mungkin operator-
) untuk iterator dua arah, yang tidak akan direkomendasikan .