爲什麼使用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