Мне нужно отсортировать структуру данных vector<pair<unsigned, pair<vector<unsigned>, vector<unsigned> > > > sbp
сначала с помощью sbp.second.second vector и для равных значений sbp.second.second by sbp.second.first - оба вектора сравниваются (i) размер векторов; (ii) если размер векторов равен, то векторы лексикографически сортируются. Для этого я написал следующий код. Но я не знаю, почему, но этот код застревает в бесконечном цикле. Может кто-то, пожалуйста, помогите мне в том, где я ошибаюсь.Сортировка векторов в C++
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
typedef std::pair<std::vector<unsigned>, std::vector<unsigned> > vec_pair;
bool sortingFunc(const pair<unsigned,vec_pair>& a, const pair<unsigned,vec_pair>& b)
{
if((a.second).second.size() == (b.second).second.size()) {
if(std::lexicographical_compare((a.second).second.begin(), (a.second).second.end(), (b.second).second.begin(), (b.second).second.end()))//a<b
{
return true;
}else{
if((a.second).first.size() == (b.second).first.size()) {
return std::lexicographical_compare((a.second).first.begin(), (a.second).first.end(), (b.second).first.begin(), (b.second).first.end());
} else {
// Sort by size.
return (a.second).first.size() < (b.second).first.size();
}
}
} else {
// Sort by size.
return (a.second).second.size() < (b.second).second.size();
}
}
int main()
{
vector<pair<unsigned, pair<vector<unsigned>, vector<unsigned> > > > sbp;
std::sort(sbp.begin(), sbp.end(), sortingFunc);
}
Я использую C++ 11 (GCC 4.8.2)
Вы пытались выполнить код с помощью отладчика, чтобы узнать, что происходит? – NathanOliver
@NathanOliver Да. –
А потом, где был застрял код? Это было в lexicographic_compare, функции сортировки или где-то еще? –