Esiste uno standard modo per accedere al contenitore sottostante stack
, queue
, priority_queue
?Esiste un modo per accedere al contenitore sottostante degli adattatori contenitore STL?
Ho trovato un metodo chiamato: _Get_container()
in VS2008
realizzazione di stack
e queue
, ma nessuno per priority_queue
! Penso che non sia lo standard comunque.
Inoltre, so che è una domanda stupida! dove posso trovare la documentazione ufficiale della libreria standard?
Solo per chiarimenti, non stavo cercando di rovinare il contenitore sottostante. Tutto quello che stavo cercando di fare è questo:
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;
Spero si vede che _Get_container()
non è standard, e non c'è nessuno per priority_queue
in VS2008
attuazione.
non è esattamente quello che ti serve, ma coda/pila/priority_queue tutti hanno un ** ** protetta membro 'C', che è il contenitore sottostante, quindi se si eredita da uno di questi, è possibile accedere direttamente . –
@Evan Interessante! Questo significa che gli adattatori sono progettati per l'estensione tramite ereditarietà? Se è così, perché nessun agente virtuale? –
Inoltre, i dati protetti sono un no-no nel mio libro - Sono un po 'deluso da questo! –