微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在这种情况下 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 举报,一经查实,本站将立刻删除。