170 похожих чатов

У меня есть константная функция, которая вычисляет некоторые элементы в

контейнере и возвращает константные итераторы на них. Но есть проблема, как потом с ними работать? Сама функция никаких действий не совершает, значит должна быть константой, но извне потом тоже никаких действий над константными итераторами совершить нельзя. Подскажите, пожалуйста, есть какое-то нормальное решение этой проблемы?

13 ответов

21 просмотр

Сделать неконстантную перегрузку

Elnee-あめ Автор вопроса
Danya🔥
Сделать неконстантную перегрузку

То есть если вызываешь её не для просто посмотреть, а для изменений потом, то она будет неконстантные итераторы возвращать, верно?

Elnee あめ
То есть если вызываешь её не для просто посмотреть...

если передаешь неконстантные элементы будет вызываться неконстантная функция

Elnee あめ
То есть если вызываешь её не для просто посмотреть...

Если у тебя объект константный, то вызовется константная перегрузка Иначе неконстантная

Elnee-あめ Автор вопроса
Danya🔥
Если у тебя объект константный, то вызовется конст...

Но тогда придётся код функции полностью продублировать?

Elnee あめ
Но тогда придётся код функции полностью продублиро...

А зачем вообще констатная перегрузка? И метод что, возвращает итератор на член контейнера?

Elnee-あめ Автор вопроса
Liber Azerate
А зачем вообще констатная перегрузка? И метод что,...

Функция выбирает (допусти рандомно) несколько элементов в контейнере и возвращает итераторы на них. Вот отсюда и проблема. Что я хочу сделать её константной, но тогда придётся решать проблемы с тем, что захочется извне что-то поменять с ними, а этого нельзя сделать если с константным итератором.

Elnee あめ
Функция выбирает (допусти рандомно) несколько элем...

Ну, это кажется вообще немного не очень идеей. Ещё инвалидируются итераторы

Elnee-あめ Автор вопроса
Liber Azerate
Ну, это кажется вообще немного не очень идеей. Ещё...

Ну они промежуточно нигде храниться не будут, я понимаю что могут инвалидироваться.

Elnee-あめ Автор вопроса
Liber Azerate
Ну, это кажется вообще немного не очень идеей. Ещё...

А что тогда делать? Вернуть индексы просто?

Elnee あめ
А что тогда делать? Вернуть индексы просто?

Да, так точно не будет проблем с неконстантной перегрузкой, по крайней мере

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Карта сайта