当涉及到"问题线"的"隐藏特征"时,没有C++的爱吗?想我会把它扔出去.C++的一些隐藏功能是什么?
我偶然发现了这个问题,其答案使用了一个奇怪的结构:
typedef std::queue<int> Q;
typedef Q::container_type C;
C & get (Q &q)
{
struct hack : private Q {
static C & get (Q &q) {
return q.*&hack::c;
}
};
return hack::get(q);
}
Run Code Online (Sandbox Code Playgroud)
我通常遵循它q可以访问c由get函数引用的自己的成员.但是,我无法清楚地解释它.究竟发生了什么.*&,为什么允许?
是否有一个标准来访问的底层容器的方式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) …Run Code Online (Sandbox Code Playgroud)