在这种情况下 std::sort 是安全的

问题描述

我的项目中有这样一段代码

vector<int> vec;
int begin = 0,end = 0;
for(...) {
    for (...) {
        if (x) {
            vec.push_back(some_value);
            end++;
        }
    }
    std::sort(vec.begin() + begin,vec.begin() + end,std::greater<int>());
    begin = end;
}

我正在尝试逐个对向量 vec 进行排序。但是布尔值 x 可能是假的。在这种情况下,begin 等于 end,因此它可能会执行这样的代码std::sort(vec.begin() + 3,vec.begin() + 3,std::greater<int>());

即使 vec.begin() + begin 可能无法取消引用,这是否安全?或者我必须添加如下条件:

if (begin < end) {
    std::sort(vec.begin() + begin,std::greater<int>());
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)