контейнере и возвращает константные итераторы на них. Но есть проблема, как потом с ними работать? Сама функция никаких действий не совершает, значит должна быть константой, но извне потом тоже никаких действий над константными итераторами совершить нельзя. Подскажите, пожалуйста, есть какое-то нормальное решение этой проблемы?
Сделать неконстантную перегрузку
То есть если вызываешь её не для просто посмотреть, а для изменений потом, то она будет неконстантные итераторы возвращать, верно?
если передаешь неконстантные элементы будет вызываться неконстантная функция
Если у тебя объект константный, то вызовется константная перегрузка Иначе неконстантная
Но тогда придётся код функции полностью продублировать?
Думаю это можно как-то избежать
А зачем вообще констатная перегрузка? И метод что, возвращает итератор на член контейнера?
Функция выбирает (допусти рандомно) несколько элементов в контейнере и возвращает итераторы на них. Вот отсюда и проблема. Что я хочу сделать её константной, но тогда придётся решать проблемы с тем, что захочется извне что-то поменять с ними, а этого нельзя сделать если с константным итератором.
Ну, это кажется вообще немного не очень идеей. Ещё инвалидируются итераторы
Ну они промежуточно нигде храниться не будут, я понимаю что могут инвалидироваться.
А что тогда делать? Вернуть индексы просто?
Да, так точно не будет проблем с неконстантной перегрузкой, по крайней мере
Ок, подумаю. Спасибо.
Обсуждают сегодня