是否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