GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
deductionguidesforstd::priority_queue(3) C++ Standard Libary deductionguidesforstd::priority_queue(3)

deductionguidesforstd::priority_queue - deductionguidesforstd::priority_queue


Defined in header <queue>
template <class Comp, class Container>


priority_queue(Comp, Container) (1) (since C++17)


-> priority_queue<typename Container::value_type, Container,
Comp>;
template<class InputIt,


class Comp = std::less</*iter-value-type*/<InputIt>>,
class Container = std::vector</*iter-value-type*/<InputIt>> (2) (since C++17)
priority_queue(InputIt, InputIt, Comp = Comp(), Container =
Container())


-> priority_queue</*iter-value-type*/<InputIt>, Container, Comp>;
template<class Comp, class Container, class Alloc>


priority_queue(Comp, Container, Alloc) (3) (since C++17)


-> priority_queue<typename Container::value_type, Container,
Comp>;
template<class InputIt, class Alloc>


priority_queue(InputIt, InputIt, Alloc)
-> priority_queue</*iter-value-type*/<InputIt>, (4) (since C++17)
std::vector</*iter-value-type*/<InputIt>, Alloc>,


std::less</*iter-value-type*/<InputIt>>>;
template<class InputIt, class Comp, class Alloc>


priority_queue(InputIt, InputIt, Comp, Alloc) (5) (since C++17)
-> priority_queue</*iter-value-type*/<InputIt>,


std::vector</*iter-value-type*/<InputIt>, Alloc>, Comp>;
template<class InputIt, class Comp, class Container, class Alloc>


priority_queue(InputIt, InputIt, Comp, Container, Alloc) (6) (since C++17)


-> priority_queue<typename Container::value_type, Container,
Comp>;


These deduction guides are provided for std::priority_queue to allow deduction from
underlying container type and from an iterator range. /*iter-value-type*/<It>
denotes typename std::iterator_traits<It>::value_type for any type It.


These overloads participate in overload resolution only if


* InputIt satisfies LegacyInputIterator,
* Comp does not satisfy Allocator,
* Container does not satisfy Allocator,
* for overloads (4) and (5),
(since C++23) Alloc satisfies Allocator, and
* for overloads (3) and (6), std::uses_allocator_v<Container, Alloc> is true.


Note: the extent to which the library determines that a type does not satisfy
LegacyInputIterator is unspecified, except that as a minimum integral types do not
qualify as input iterators. Likewise, the extent to which it determines that a type
does not satisfy Allocator is unspecified, except that as a minimum the member type
Alloc::value_type must exist and the expression
std::declval<Alloc&>().allocate(std::size_t{}) must be well-formed when treated as
an unevaluated operand.

// Run this code


#include <queue>
#include <vector>
#include <iostream>
#include <functional>


int main() {
const std::vector<int> v = {1,2,3,4};
std::priority_queue pq1{std::greater<int>{}, v}; // deduces std::priority_queue<
// int, std::vector<int>,
// std::greater<int>>
for (; !pq1.empty(); pq1.pop())
std::cout << pq1.top() << ' ';
std::cout << '\n';


std::priority_queue pq2{v.begin(), v.end()}; // deduces std::priority_queue<int>


for (; !pq2.empty(); pq2.pop())
std::cout << pq2.top() << ' ';
std::cout << '\n';
}


1 2 3 4
4 3 2 1


Defect reports


The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
LWG 3506 C++17 deduction guides from iterator and allocator added
were missing

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.