是否std::sort
假設它能夠正確地工作,如果它得到一個空的範圍?std ::排序在空向量
我得到一個分段錯誤(GCC 4.8.3),此代碼:
std::vector<float> f;
std::sort(f.begin() + 1, f.end());
標準說,對於空載體begin()
和end()
返回相同的值。所以我預計sort
在上述情況下什麼也不做,因爲它應該得到一個空的範圍:begin()+1
應該大於end()
。
有這個空範圍排序沒有問題:
std::sort(f.begin(), f.end());
那麼'f.begin()+ 1'呢?那不是越界嗎? – juanchopanza
@juanchopanza它有一些價值,重要的是'begin()+ 1'是'end()'。 – user2052436
這是一個值是無效的迭代器。它不是'>'或'<''而不是'end()'。這是無效的。 – juanchopanza