Tys*_*son 1 c++ queue containers vector
我正在创建一个std::priority_queue使用std::vector容器.
似乎优先级队列在其构造函数中创建传递给它的容器的副本,因为在构造队列之后对容器所做的更改不会反映在队列的容器中.
例如,如果我调用clear()我的容器,优先级队列仍然是满的.
有没有办法在构建后维护对优先级队列的内部容器的引用?
不,没有办法做到这一点.原因在于,如果您有权访问底层容器,则可以访问它并修改它,就像它不是优先级队列一样,这将非常混乱,并且与std::priority_queue提供队列的所需用例相反.
这是从标准的角度来看,也许你的实现有一个允许访问的扩展,但这将是非常令人惊讶的,我知道没有实现这样做.您应该查阅相应的文档.
话虽如此,你总是可以提供一个std::priority_queue存储容器的包装器.但我不推荐它,(如上所述)你可以在没有队列语义的情况下改变它.