Я получил два вектора, которые выглядят следующим образом: std::vector<std::tuple<unsigned int, unsigned int, float, Position, MemberOf>>
C++: Слияние двух векторов с кортежами как элемент
Сначала я отсортирован их
std::sort(vector.begin(), vector.end(), sort_func());
struct sort_func {
inline bool operator() (std::tuple<unsigned int, float, Position> &element1, std::tuple<unsigned int, float, Position> &element2) {
if (std::get<1>(element1) < std::get<1>(element2) || (std::get<1>(element1) == std::get<1>(element2) && tau(element1) < tau(element2)))
return true;
else
return false;
}
unsigned int tau(std::tuple<unsigned int, float, Position> &element) {
if (std::get<2>(element) == end)
return 0;
else if (std::get<2>(element) == in_plane)
return 1;
else if (std::get<2>(element) == start)
return 2;
}
};
Теперь я получил два отсортированных векторы, и я хочу, чтобы объединить они в пути, я их отсортировал. Я видел, что есть метод std::merge()
. Но я не уверен, как использовать его этим сложным способом.
Может кто-нибудь объяснить мне, как я могу использовать мой sort_func
при слиянии двух векторов?
Окончательный сводный список должен поддерживать порядок сортировки. Это и есть цель.
Спасибо за ваши советы!
Что сольются делать? Поместить окончательный список в отсортированном порядке? – P0W
@ P0W: Да точно. Извините, я отредактирую свой вопрос по этому поводу. – progNewbie
Ну так же, как вы сделали для станда :: рода, предоставляя 'sort_func()', как * * Comp параметр [станд :: слияния] (http://en.cppreference.com/w/cpp/algorithm/merge). –