我有以下代码片段:
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;
}
即使调用了 sort 函数, opt[] 和 one[] 也不会被排序。但是,如果我使用 push_back() 插入元素,然后调用 sort() 函数,它们就会被排序。
为什么两种情况下的结果不同?