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

Есть ли возможность сделать так, чтобы поле-вектор в классе один

раз инициализировалось в конструкторе и более в него нельзя было бы добавить элементы? При этом с самим элементами в этом векторе должна быть возможность работать как не с const объектами.

23 ответов

29 просмотров

А удалить? Если тоже нельзя, то можешь и простой С массив и std::array и еще подобного в бустах и гитхабах.

В фабрику оберни

Отдавать наружу только итераторы не поможет?

Ну и еще вариант тупо и просто написать свой классик для обертки malloc/free, new/delete или вообще какой умный указатель заюзать.

Viktor Chyzhdzenka
Ну и еще вариант тупо и просто написать свой класс...

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Viktor Chyzhdzenka
Ну и еще вариант тупо и просто написать свой класс...

Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

const

d7d1cd- Автор вопроса
Ilya Zviagin
const

Тогда и элементы будут const, а мне так не надо.

d7d1cd
Тогда и элементы будут const, а мне так не надо.

class MyClass { public: MyClass() : vc({1, 2, 3, 4}) {} int& getElem(size_t idx) { return const_cast<int&>(vc[idx]); } private: const std::vector<int> vc; };

Андрей Таусинов
class MyClass { public: MyClass() : vc({1, 2, 3, ...

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

d7d1cd- Автор вопроса
Ilya Zviagin
Не будут

Не знаю, что тут имелось ввиду, но элемент в таком векторе поменять нельзя.

d7d1cd- Автор вопроса
Андрей Таусинов
class MyClass { public: MyClass() : vc({1, 2, 3, ...

Сделать из того, что изначально const - не const - это UB.

d7d1cd
Сделать из того, что изначально const - не const -...

ну кажется что элементы вектора - не const

d7d1cd- Автор вопроса
Mikail Bagishov
ну кажется что элементы вектора - не const

А не будет ли там какой-то оптимизации?

d7d1cd
А не будет ли там какой-то оптимизации?

ну оптимизации тут не при делах, вопрос что в стандарте написано. Я не помню, чтобы там было что-то типа "если вектор помечен как const, то его внутренний массив тоже const" (и вообще кажется, что такая формулировка невозможна)

Mikail Bagishov
ну кажется что элементы вектора - не const

Если коллекция немутабельная, то и элементы её тоже. Это не в плюсах, это вообще так

netricks
Если коллекция немутабельная, то и элементы её тож...

ну значит вопрос в том, насколько const vector иммутабельный. Андрей утверждает (и на мой взгляд убедительно), что его иммутабельность это (в некоторых отношениях) конвенция.

Mikail Bagishov
ну значит вопрос в том, насколько const vector имм...

Обойти завсегда можно. Но если вы пометили вектор как const и собираетесь что-то в нём менять, или что ещё хуже, ожидаете, что в нём что-то поменяется во время работы с ним, то вы, веооятно, что-то делаете не так. Наверно, не надо передавать его через константную ссылку, например

netricks
Обойти завсегда можно. Но если вы пометили вектор ...

Ну насколько я понял, исходный кейс - это положить в приватное поле класса вектор так, чтобы нельзя было его ресайзить, но можно было менять его элементы.

Mikail Bagishov
ну оптимизации тут не при делах, вопрос что в стан...

Внутрений массив не конст, но operator[] возвращает константную ссылку

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

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

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта