我有一个带有字符串队列的程序。要求已更改,现在输出必须按字母顺序排列。我正在尝试对队列进行排序但是收到错误"没有匹配的函数调用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上时,它只显示编译错误消息,那么我该如何复制和粘贴消息?
编辑:我现在理解队列无法排序。那么最好的数据结构是什么呢?它只需要从一端添加,排序和红色线性(从开始到结束)?答案 0 :(得分:1)
This是std::queue
。它没有begin
和end
- 这会破坏包装器的目的。请改为选择std::vector
或使用std::priority_queue
。
答案 1 :(得分:0)
std::queue
没有begin
和end
,根据定义,订单始终是FIFO。
选择std::deque
,可以对其进行排序,与std::vector
不同,它具有pop_front
,并为FIFO操作提供更好的性能。