一行断言来测试 STL 容器是否已排序
有没有一种方法可以编写一个单行条件,如果 STL 容器已排序,该条件将返回 true?有问题的容器是 std::vector
我打算在断言中使用它
Is there a way to write a one line condition that would return true if STL container is sorted? The container in question is std::vector
I intend to use it in an assert
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将 adjacent_find 与较小或较大函子结合使用。
限制:
您应该知道容器是按升序还是降序排序。
如果
向量
应该按升序排序:Use adjacent_find in combination with less or greater functor.
Restriction:
You should know whether the container is sorted in ascending or descending.
If the
vector
is supposed to be sorted in ascending order:您可以使用 std::is_sorted(vec.begin(),vec. end()) 来测试它是否已排序。但请注意,这是 O(n)。
You can use std::is_sorted(vec.begin(),vec.end()) to test if it is sorted. Note, though, that this is O(n).
这取决于您要使用哪种 STL 数据类型。
如果键已重载比较运算符,则映射已按键排序。你去这里真好。
列表要求您显式调用排序函数。您需要跟踪是否已对其进行排序。
希望这有帮助。
It depends what STL data type you want to use.
A map is already sorted by the key provided the key has overloaded compare operators. You're good to go here.
A list requires that you explicitly call the sort function. You will need to keep track of whether or not you sorted it yet.
Hope this helps.