Как использовать результат std::views::filter для std::ranges::random_access_range?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как использовать результат std::views::filter для std::ranges::random_access_range?

Сообщение Anonymous »

std::views::filter не может моделировать концепцию std::ranges::random_access_range (скорее всего, потому, что он не может сопоставить произвольный доступ из временного фильтруемого диапазона в исходный диапазон ; поправьте меня, если я ошибаюсь в рассуждениях или формулировках).
Я могу использовать std::ranges::to() (см. демо ниже) ), чтобы преобразовать временный диапазон в вектор, но:
  • Он создает копию значений вектора v, и я не могу его изменить их. Есть ли способ решить эту проблему?
  • Это лучший (наиболее эффективный с точки зрения производительности и перераспределения памяти) подход?
  • Каким будет реальное влияние на производительность и перераспределение памяти? Будет ли настоящий std::vector создаваться в памяти динамически?
(Конечно, «наиболее эффективный» здесь означает «без контекста»; наверняка в реальных случаях код функции rar можно изменить для внутренней фильтрации, избегая дополнительных выделений. Вопрос в том, можно ли это сделать лучше, если функция rar "неприкосновенна"?)


Подробнее здесь: https://stackoverflow.com/questions/793 ... cess-range
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»