c++ - 如何检查队列是否使用stl排序
问题描述
我希望你能帮助我解决这个问题,我需要编写一个 C++ 函数,该函数输入一个队列作为参数并检查队列中的内容是否按排序顺序排列(使得前面的元素最小)。BOOLEAN
应该相应地返回一个值。假设队列中没有重复元素。
我正在努力理解排序的概念,所以任何帮助都将不胜感激,这是我到目前为止所尝试的:
#include "stdafx.h"
#include <iostream>
#include <queue>
using namespace std;
bool is_Sorted(queue<int> q) {
int my_front = q.front();
int my_back = q.back();
if (my_front==my_back) {
return true;
}
if (my_front+1>my_front) {
return true;
}
}
int main()
{
queue <int> q;
q.push(3);
q.push(4);
q.push(5);
q.push(6);
q.push(7);
is_Sorted(q);
return 0;
}
解决方案
因为 aqueue
不提供您不能使用的迭代器:is_sorted
因此,比较需要复制queue
or 顺序pop
并比较 的元素queue
,然后将push
它们返回到queue
. 我选择简单地复制queue
这个例子:
template <typename T>
bool is_sorted(queue<T> q) {
if(!empty(q)) {
for(T i = q.front(); size(q) > 1U; i = q.front()) {
q.pop();
if(i > q.front()) {
return false;
}
}
}
return true;
}
这个例子显然会产生复制成本,queue
这显然是不可取的。之所以会产生此成本,是因为aqueue
是该工作的错误工具。考虑priority_queue
或只是一个vector
.
推荐阅读
- c# - 使用c#读取连接到api的excel单元格
- java - 使用 JZOS 工具包的 JCL 作业中所有 z/OS DD 语句的列表
- css - 如何将组件的 [ngClass] 应用到其子元素
- bash - 验证 IP 地址?
- sql - 删除基于 PostgreSQL 中两列的重复项
- maven-3 - fabric8:docker-maven-plugin 在 Jenkins 的 Centos7 上运行时无法加载 ffi 提供程序
- android - Android:屏幕关闭后服务不起作用
- mysql - 在 SQL 中查找不同列的具有相同值的行
- html - 尝试将我的项目符号点放在页面中间,同时使列表左对齐
- django - Django 自定义权限未同步到数据库