- Текущая реализация:
Это мой метод получения, но он кажется многословным. Есть ли более чистый или более идиоматический способ добиться этого?Код: Выделить всё
public: [[nodiscard]] std::ranges::view auto get_drawables() const { return drawables_ | std::views::transform([](const auto& drawable) { return drawable.get(); }); } private: std::vector drawables_; - Право собственности на вектор:
- Должен ли я хранить элементы по значение, необработанные указатели или интеллектуальные указатели?
- В настоящее время я использую std::unique_ptr, так как не собираюсь делить владение. Правильный ли это выбор?
- Выявление переносчика:
- Я хочу, чтобы вызывающие абоненты:
перебирали элементы (возможно, более одного раза). - изменяли объекты внутри вектора.
- Я хочу, чтобы вызывающие абоненты:
- Я не хотят, чтобы вызывающие абоненты:
- Изменяли экземпляры std::unique_ptr.
- Добавляли или удаляли элементы в векторе.
- Должен ли я действительно предоставлять необработанные указатели, чтобы не подразумевать владение?
- Могу ли я использовать std ::span каким-то образом, поскольку базовое хранилище действительно является смежным (std::vector)?
Подробнее здесь: https://stackoverflow.com/questions/793 ... trt-in-c23