Скажем, у вас есть Eigen::Matrix<float, Eigen::Dynamic, 3> m;
. Теперь у вас есть данные вне Eigen и вы хотите переместить их в свою матрицу, используя алгоритм STL (например, std::transform
). В документации приведены примеры использования m.rowwise()
в цикле for, основанном на диапазоне. Однако передача m.rowwise()
в качестве выходного итератора std::transform
не работает. Он жалуется, что VectorwiseOp
не имеет operator++
. Цикл for, основанный на диапазоне, все равно вызовет метод begin()
выражения диапазона, но VectorwiseOp
не имеет a begin()
метода.
Скажи, что у меня есть std::vector<std::tuple<float, float, float>> i;
. Как бы я преобразовать это в матрицу? Конечно, здесь можно использовать простой цикл над индексной переменной, но это становится трудным при использовании более сложных структур входных данных. Затем можно использовать std::for_each
и поддерживать индекс выхода извне, но это выглядит неуклюже. Я ищу что-то вроде
std::transform(
i.cbegin(),
i.cend(),
/* TODO: something like m.rowwise() */,
[](const std::tuple<float, float, float> &e) -> /* TODO */ {
/* don't care here */
});