当前位置:  开发笔记 > 编程语言 > 正文

算法forward_list是排序的?

如何解决《算法forward_list是排序的?》经验,为你挑选了1个好方法。

我在C++ 11中遇到了一些困难.我想创建函数isSorted,如果我std::forward_list已经排序则返回true,否则返回false.

我想象过这样的代码:

template
bool estTriee(forward_list& list) {
        typename forward_list::iterator it;
        it = list.begin();

        while(it != list.end() &&  *it <= *next(it, 1)) {
            it++;
        }

        return it == list.end();
}

但是gcc会给我一个围绕while行的分段错误.



1> Blastfurnace..:

如果迭代器到达列表中的最后一个元素,您的代码将失败.当发生这种情况std::next(it)等于list.end()并且取消引用end()迭代器是错误的(在这种情况下导致段错误).

我的建议是std::is_sorted在标准库中使用该算法.它已经编写,调试,并做你想要的.

template
bool estTriee(const std::forward_list& list) {
    return std::is_sorted(list.begin(), list.end());
}

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有