У меня есть следующий фрагмент кода:станд :: сортировать() не работает на векторном пар
struct compare {
bool operator()(const pair<size_t, double>& left, const pair<size_t, double>& right) {
return left.second > right.second;
}
};
int main() {
size_t vertices = 31112738;
vector<pair<size_t, double> > opt, one;
opt.reserve(vertices);
one.reserve(vertices);
for(size_t i=0;i<vertices;i++) {
opt[i] = make_pair(i,rand());
one[i] = make_pair(i,rand());
}
sort(opt.begin(), opt.end(), compare());
sort(one.begin(), one.end(), compare());
return 0;
}
Даже после вызова функции сортировки, выбрать [] и один [] не сортируются. Если, однако, я использую push_back() для вставки элементов, а затем вызываю функцию sort(), они сортируются.
Почему результат отличается от двух сценариев?
'reserve' изменяет емкость, а не размер. –
это скомпилировать .. – user1715122
О, извините, опечатка ... – user1715122