Как я могу элегантно заполнить/инициализировать два (или более) диапазонов из диапазона, содержащего пары/кортежи элеменC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу элегантно заполнить/инициализировать два (или более) диапазонов из диапазона, содержащего пары/кортежи элемен

Сообщение Anonymous »

Для проведения нарастных диапазонов у нас есть std :: views :: Zip и друзья. Функция «Индекс фильтра» как выражение диапазона? < /p>

Код: Выделить всё

auto getVerticesAndNormalsForIndices(const std::vector& indices, const std::vector
& allVertices, const std::vector& allNormals)
{
std::vector vertices(indices.size());
std::vector normals(vertices.size());
std::ranges::transform(indices, std::views::zip(vertices, normals).begin(), [&allVertices, &allNormals](const size_t i)
{
return std::pair{ allVertices[i], allNormals[i] };
});
return { std::move(vertices), std::move(normals) };
}
Я знаю, что мог бы создать представление о нормале и вершинах, а затем использовать два отдельных вызова для std :: elements , а затем вызов к STD: : janges :: to для извлечения вектора , но это содержит много повторения. Есть ли стандартный способ выполнения этого типа «распаковки» или есть способ написать интегрированный способ разобщить контейнеры (возможно, назначение ZIP_VIEW?).


Подробнее здесь: https://stackoverflow.com/questions/794 ... containing
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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