我了解到该emplace_back
方法将对象推送到向量中而无需创建临时对象。但是,我找不到使用push
或为priority_queue 实现此目的的方法emplace
。有没有一种有效的方法来实现这一目标?或者使用 boost 的 shared_ptr 之类的容器在性能方面很好。
问问题
1307 次
1 回答
2
Astd::priority_queue
只是一个容器适配器,它std::vector
使用堆操作包装底层容器(默认情况下)。所以为了把push
东西放进去而不创建一个临时的,那么std::priority_queue::emplace
正是你想要使用的。
当然,您不能将任何东西放入队列中的任意位置(并且您的推送元素不一定会出现在容器的末尾),因为它是优先级队列维护和内部顺序。但是,如果那是您想要做的,那么无论如何您选择了错误的容器(或容器适配器)。
不,如果它只是关于性能而不是生命周期管理,那么它很少是shared_ptr
一个可行的选择。您是否需要动态内存分配,所以这不是一个选择,尤其是在 C++11 中。
于 2013-02-12T15:16:56.030 回答