相关疑难解决方法(0)

std :: queue iteration

我需要迭代std::queue.www.cplusplus.com说:

默认情况下,如果没有为特定队列类指定容器类,则使用标准容器类模板deque.

那么我可以以某种方式到达队列的底层deque并迭代它吗?

c++ iteration queue c++-standard-library

67
推荐指数
5
解决办法
12万
查看次数

c ++中的优先级队列

有没有办法在c ++中迭代优先级队列?我的理解是它们或多或少是不可变的,容器的唯一操作是顶层元素.我希望能够打印出优先级队列的内容,但不确定如何解决问题.

c++ iterator priority-queue

6
推荐指数
1
解决办法
2134
查看次数

基于范围的for循环用于priority_queue

像这样定义我的priority_queue,

priority_queue<int> parts(start, start+N, less<int>());
Run Code Online (Sandbox Code Playgroud)

以下代码将无法编译

for(int t : parts){
    ...
}
Run Code Online (Sandbox Code Playgroud)

这引出了我的问题:

在C++ 11中,是否允许基于范围的循环 std::priority_queue

通常,允许使用基于范围的for循环迭代哪些结构?

我知道我可以做同样的事情:

while(!parts.empty()){
    cout << "Next element: " << parts.top() << endl;
    parts.pop();
}
Run Code Online (Sandbox Code Playgroud)

是否可以通过队列进行迭代?

c++ for-loop priority-queue c++11

3
推荐指数
1
解决办法
966
查看次数

我怎样才能在优先队列中找到价值?

我想在我的优先级队列中找到一个节点,但我找不到解决方案:(如果你有解决方案,我很感兴趣.

谢谢你的帮助.

c++ queue priority-queue

1
推荐指数
2
解决办法
2万
查看次数

使用 .*&amp; 访问基类成员(访问priority_queue容器)

我试图理解下面的代码

如何迭代priority_queue?

我认为,由于 HackedQueue 是从priority_queue 私有派生的,因此它可以访问其私有。所以,我假设*&HackedQueue::c返回基类对象的地址,并为 q 调用它。但尚不完全清楚,甚至更不清楚它如何成为有效的语法。


提到priority_queue,我想知道是否仍然没有更干净的解决方法。例如,此链接上的第四个 c'tor

priority_queue( const Compare& compare, Container&& cont );

https://en.cppreference.com/w/cpp/container/priority_queue/priority_queue

似乎提供了一个可以使用的容器,而不是作为只读输入。我在 Visual Studio 头文件中没有看到它,而且我不清楚&&.


相关的是,我不明白相反的问题,例如为什么我需要访问私有容器,它不是为此而设计的。那么,如何调试优先级队列,其中基本需求是打印其元素?


#include <queue>
#include <cstdlib>
#include <iostream>
using namespace std;

template <class T, class S, class C>
S& Container(priority_queue<T, S, C>& q) {
    struct HackedQueue : private priority_queue<T, S, C> {
        static S& Container(priority_queue<T, S, C>& q) {
            return q.*&HackedQueue::c;
        }
    };
    return HackedQueue::Container(q);
}

int main()
{
    priority_queue<int> pq;
    vector<int> &tasks = Container(pq); …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
263
查看次数