We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 26ff819 commit 7d07332Copy full SHA for 7d07332
src/CxxWrap.jl
@@ -948,8 +948,8 @@ ConstCxxPtr, ConstCxxRef, CxxRef, CxxPtr,
948
CppEnum, ConstArray, CxxBool, CxxLong, CxxULong, CxxChar, CxxChar16, CxxChar32, CxxWchar, CxxUChar, CxxSignedChar,
949
CxxLongLong, CxxULongLong, ptrunion, gcprotect, gcunprotect, isnull
950
951
-using .StdLib: StdVector, StdString, StdWString, StdValArray, StdThread, StdDeque, StdQueue, StdSet, StdMultiset, StdUnorderedSet, StdUnorderedMultiset
+using .StdLib: StdVector, StdString, StdWString, StdValArray, StdThread, StdDeque, StdQueue, StdSet, StdMultiset, StdUnorderedSet, StdUnorderedMultiset, StdPriorityQueue
952
953
-export StdLib, StdVector, StdString, StdWString, StdValArray, StdThread, StdDeque, StdQueue, StdSet, StdMultiset, StdUnorderedSet, StdUnorderedMultiset
+export StdLib, StdVector, StdString, StdWString, StdValArray, StdThread, StdDeque, StdQueue, StdSet, StdMultiset, StdUnorderedSet, StdUnorderedMultiset, StdPriorityQueue
954
955
end # module
src/StdLib.jl
@@ -230,6 +230,18 @@ for StdMultisetType in (StdMultiset, StdUnorderedMultiset)
230
Base.count(x, v::StdMultisetType) = multiset_count(v, x)
231
end
232
233
+Base.size(v::StdPriorityQueue) = (Int(cppsize(v)),)
234
+Base.length(v::StdPriorityQueue) = Int(cppsize(v))
235
+Base.isempty(v::StdPriorityQueue) = pq_isempty(v)
236
+Base.first(v::StdPriorityQueue) = isempty(v) ? nothing : pq_top(v)
237
+Base.push!(v::StdPriorityQueue, x) = (pq_push!(v, x); v)
238
+function Base.pop!(v::StdPriorityQueue)
239
+ isempty(v) && throw(ArgumentError("Cannot pop from an empty priority queue"))
240
+ val = pq_top(v)
241
+ pq_pop!(v)
242
+ return val
243
+end
244
+
245
function Base.fill!(v::T, x) where T <: Union{StdVector, StdValArray, StdDeque}
246
StdFill(v, x)
247
return v
test/stdlib.jl
@@ -327,6 +327,26 @@ let
327
@test length(queue) == 1
328
329
330
+@testset "StdPriorityQueue" begin
331
+ pq = StdPriorityQueue{Int64}()
332
+ @test length(pq) == 0
333
+ push!(pq, 5)
334
+ push!(pq, 1)
335
+ @test isempty(pq) == false
336
+ pq = push!(pq, 4)
337
+ pq = push!(pq, 10)
338
+ @test length(pq) == 4
339
+ @test first(pq) == 10
340
+ @test pop!(pq) == 10
341
+ @test length(pq) == 3
342
+ @test pop!(pq) == 5
343
+ @test pop!(pq) == 4
344
+ @test pop!(pq) == 1
345
+ @test isempty(pq) == true
346
+ @test isnothing(first(pq))
347
+ @test_throws ArgumentError pop!(pq)
348
349
350
@testset "StdSet and StdUnorderedSet" begin
351
for StdSetType in (StdSet, StdUnorderedSet)
352
@testset "Set with integers" begin
0 commit comments