Существует ли стандартный способ доступа к базовому контейнеру stack
, queue
, priority_queue
?
Я нашел метод под названием _Get_container()
в VS2008
реализации stack
и queue
, но не для priority_queue
! Я думаю, что это не стандарт.
Кроме того, я знаю, что это глупый вопрос! где я могу найти официальную документацию стандартной библиотеки?
Просто для уточнения, я не пытался испортить основной контейнер. Все, что я пытался сделать, это следующее:
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;
Надеюсь, вы видите, что _Get_container()
не является стандартным, а для priority_queue
в VS2008
не существует ни одного.