Я пробую новую библиотеку range-v3 (0.5.0, clang-7.1)
Я пересекаю график (bfs).Каждый узел на графике содержит некоторые векторные данные (std::vector<double>
).Проходя по графику, я пытаюсь создать concat_view
(который является объединением всех векторов).
Я пытаюсь сохранить это concat_view
как переменную-член класса обхода графа.(default_bfs_visitor
из библиотеки графов буста, если быть точным).Итак, заранее, я не буду знать, сколько векторов я собираюсь встретить.Я делаю что-то вроде этого.
struct bfs_visitor
{
private:
ranges::v3::any_view<double> mView;
public:
template<class Graph>
void finish_vertex (vertex_descriptor v, const Graph& g)
{
auto node = g[v];
std::vector<double>& data = dataForNode(node);
mView = ranges::v3::concat(mView, data);
}
};
После того, как я закончу посещение графика, я обрабатываю представление для извлечения необходимой информации.
Поскольку тип mView
меняется с каждой операцией concat
, я не могу явно указать тип mView
в объявлении.
Эта ссылка говорит о снижении производительности на any_view
.any_view
единственный вариант?