Có một số tiêu chuẩn cách truy cập vùng chứa cơ bản của stack
, queue
, priority_queue
?Có cách nào để truy cập hộp chứa bộ tiếp hợp container STL cơ bản không?
Tôi đã tìm thấy một phương pháp được gọi là: _Get_container()
trong VS2008
triển khai stack
và queue
, nhưng không có ai cho priority_queue
! Tôi nghĩ rằng nó không phải là tiêu chuẩn anyway.
Ngoài ra, tôi biết đó là một câu hỏi ngớ ngẩn! nơi tôi có thể tìm thấy tài liệu chính thức của thư viện chuẩn?
Chỉ để làm rõ, tôi đã không cố gắng gây rối với vùng chứa bên dưới. Tất cả những gì tôi đã cố gắng để làm được điều này:
template <class Container>
std::ostream& printOneValueContainer(std::ostream& outputstream, Container& container)
{
Container::const_iterator beg = container.begin();
outputstream << "[";
while(beg != container.end())
{
outputstream << " " << *beg++;
}
outputstream << " ]";
return outputstream;
}
// stack, queue
template
< class Type
, template<class Type, class Container = std::deque<Type> > class Adapter
>
std::ostream& operator<<(std::ostream& outputstream, const Adapter<Type>& adapter)
{
return printOneValueContainer(outputstream, adapter._Get_container());
}
.
.
.
std::stack<int> iStack;
.
.
std::cout << iStack << std::endl;
Tôi hy vọng bạn thấy rằng _Get_container()
không phải là tiêu chuẩn, và không có ai cho priority_queue
trong VS2008
thực hiện.
không chính xác những gì bạn cần, nhưng hàng đợi/ngăn xếp/priority_queue đều có ** thành viên ** được bảo vệ ** là thùng chứa cơ bản, vì vậy nếu bạn kế thừa từ bất kỳ loại nào, bạn có thể truy cập trực tiếp . –
@Evan Thú vị! Điều này có nghĩa rằng các bộ điều hợp được dự định để mở rộng thông qua thừa kế? Nếu vậy, tại sao không có dtor ảo? –
Ngoài ra, dữ liệu được bảo vệ là không có trong sách của tôi - tôi hơi thất vọng về điều này! –