gpt4 book ai didi

c++ - 算法 forward_list 是排序的?

转载 作者:搜寻专家 更新时间:2023-10-31 00:11:15 24 4
gpt4 key购买 nike

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

我想象中的代码是这样的:

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

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

return it == list.end();
}

但是 gcc 返回了一个围绕 while 行的段错误。

最佳答案

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

我的建议是使用 std::is_sorted标准库中的算法。它已被编写、调试,并且可以执行您想要的操作。

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

关于c++ - 算法 forward_list 是排序的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34644767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com