我试图在C++中打印STL priority_queue,但是我在打印队列的所有元素时遇到问题.
priority_queue<Job, vector<Job>, greater<Job>> q = pq;
for(int i = 0; i <= q.size(); i++) {
cout << q.top() << "\n";
q.pop();
}
Run Code Online (Sandbox Code Playgroud)
但是,当列表中有一个或两个元素时使用此代码就可以了,但只要我输入三个或更多元素,它就会切断要打印的最后一个项目.我不太确定为什么会发生这种情况,但这让我感到困惑了一会儿.
我试图记录 while 循环运行了多少次。但是,代码是给我的,我不确定以哪种方式修改代码才能增加代码。
int findPos( const HashedObj & x ) const
{
int offset = 1;
int currentPos = myhash( x );
while( array[ currentPos ].info != EMPTY &&
array[ currentPos ].element != x )
{
currentPos += offset; // Compute ith probe
offset += 2;
incrementCounter++;
if( currentPos >= array.size( ) )
currentPos -= array.size( );
}
return currentPos;
}
Run Code Online (Sandbox Code Playgroud)
当我编译这个时,我得到“incrementCounter无法修改,因为它是通过const对象访问的”
当我看到这个时,我知道我无法编辑 const 函数中的值,但我不知道该怎么做。