STL лямбда против петли - PullRequest
       11

STL лямбда против петли

0 голосов
/ 23 апреля 2020

У меня есть такой код:

for (size_t i = 0; i < m_particleVertex.size(); i++)
{
    auto actualPosition = m_particleVertex()[i].position;
    ...
    m_particleAttributes[i].setDirection(newDirection);
}

И мне интересно, можно ли здесь использовать STL? Я хочу попробовать сделать это с некоторым современным C ++. Диапазон для l oop не является опцией из-за различных типов m_particleVertex и m_particleAttributes. Так что да ... я думаю об использовании функции for_each, но я не знаю, возможно ли это без каких-либо дополнительных контейнеров. Я написал это:

std::for_each(m_particleAttributes.begin(), m_particleAttributes.end(), [&](ParticleSettings& particleAttribute, sf::Vertex& particleVertex) mutable {
    auto actualPosition = particleVertex.position;
    ...
    particleAttribute.setDirection(newDirection);
    });

и я знаю, что я не могу этого сделать, поэтому я думаю, что я должен сделать что-то вроде этого:

std::vector<vector2f> temp;
std::for_each(m_particleAttributes.begin(), m_particleAttributes.end(), [&](ParticleSettings& particleAttribute) mutable { temp.push_back(particleVertex.position);}

и чем делать операции для каждого элемент вектора, и проделайте то же самое с методом частицAttribute.setDirection (). Я не знаю, если это правильная идея, эффективная идея, и есть ли что-то лучше использовать? Любые идеи? Что ты думаешь? Здесь можно использовать STL или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...