Предположим, что у меня есть вектор чего-то:
std::vector<Foo> v;
Этот вектор отсортирован, поэтому равные элементы находятся рядом друг с другом.
Каков наилучший способ получить все пары итераторов, представляющие диапазоны с равными элементами (используя стандартную библиотеку)?
while (v-is-not-processed) {
iterator b = <begin-of-next-range-of-equal-elements>;
iterator e = <end-of-next-range-of-equal-elements>;
for (iterator i=b; i!=e; ++i) {
// Do something with i
}
}
Я хотел бы знать, как получить значения b
и e
в коде выше.
Так, например, если v
содержит эти числа:
index 0 1 2 3 4 5 6 7 8 9
value 2 2 2 4 6 6 7 7 7 8
Тогда я бы хотел, чтобы b
и e
указывали на элементы цикла:
iteration b e
1st 0 3
2nd 3 4
3rd 4 6
4th 6 9
5th 9 10
Есть ли элегантный способ решить эту проблему с помощью стандартной библиотеки?