排序字符串队列

时间:2017-08-17 10:30:10

标签: c++ netbeans

我有一个带有字符串队列的程序。要求已更改,现在输出必须按字母顺序排列。我正在尝试对队列进行排序但是收到错误&#34;没有匹配的函数调用declare @xml xml = '<Request> <SelectedProducts> <Product id="D04C01S01" level="1" /> <Product id="158796" level="1"> <Product id="7464" level="2"> <Product id="115561" level="3" /> </Product> <Product id="907" level="2"> <Product id="12166" level="3" /> <Product id="33093" level="3" /> <Product id="33094" level="3" /> <Product id="28409" level="3" /> </Product> <Product id="3123" level="2"> <Product id="38538" level="3" /> <Product id="37221" level="3" /> </Product> </Product> </SelectedProducts> </Request>'; with cte as ( SELECT d.value('./@id', 'varchar(50)') AS 'Id' ,d.value('./@level', 'int') AS 'Level' , CAST(NULL AS varchar(50)) AS 'ParentId' ,d.query('./Product') morexml FROM @xml.nodes('/Request/SelectedProducts/Product') AS c(d) UNION ALL SELECT d.value('./@id', 'varchar(50)') AS 'Id' ,d.value('./@level', 'int') AS 'Level' , Id AS 'ParentId' ,d.query('./Product') morexml FROM cte CROSS APPLY morexml.nodes('Product') AS c(d) WHERE morexml IS NOT NULL ) select Id, Level, ParentId from cte; 'begin(std::queue<std::cxx11__basic::string<char>>&)'

'end(std::queue<std::cxx11__basic::string<char>>&)'

排序的最佳方法是什么?从队列变为向量或其他结构会更好吗?事情是所需的唯一操作是添加到结束并从结束中删除。

我也使用Netbeans,当我将鼠标悬停在红色x上时,它只显示编译错误消息,那么我该如何复制和粘贴消息?

编辑:我现在理解队列无法排序。那么最好的数据结构是什么呢?它只需要从一端添加,排序和红色线性(从开始到结束)?

2 个答案:

答案 0 :(得分:1)

Thisstd::queue。它没有beginend - 这会破坏包装器的目的。请改为选择std::vector或使用std::priority_queue

答案 1 :(得分:0)

std::queue没有beginend,根据定义,订单始终是FIFO。

选择std::deque,可以对其进行排序,与std::vector不同,它具有pop_front,并为FIFO操作提供更好的性能。