为什么使用vector :: reserve会改变sort的行为?std ::使用std :: vector :: reserve时,排序顺序是从最大到最小的?
std::vector<unsigned> xyz;
xyz.reserve(3);
xyz[0]=3; xyz[1]=1; xyz[2]=2;
std::sort(xyz.begin(), xyz.end());
std::cout<<xyz[0]<<xyz[1]<<xyz[2]<<"\n";
//312
xyz.clear();
xyz.push_back(3); xyz.push_back(1); xyz.push_back(2);
std::sort(xyz.begin(), xyz.end());
std::cout<<xyz[0]<<xyz[1]<<xyz[2]<<"\n";
//123
储备仅保留存储器的项被存储,以便如果向量稍后需要时它将不必预留更多空间。它不会更改矢量认为它包含的项目的数量。你有一个零大小的数组,它有空间增长到3个项目而不分配更多的内存,但它仍然是一个零大小的数组。然后访问超出未定义行为的向量大小的项目。使用resize()来实际设置大小... – jcoder