C
Christopher
First time using the std:
riority_queue.
I am trying to come up with a means to remove an object from the
queue. The only available method I see is pop, which will not suffice.
I want to search through it and find the object to remove.
I imagine I need access to the underlying container. How can I get it?
My compiler complains that member c is protected.
Here is the code I tried and failed with:
#ifndef RENDERQUEUE_H
#define RENDERQUEUE_H
// EngineX Includes
#include "IRenderable.h"
// Standard Includes
#include <queue>
//------------------------------------------------------------------------------
class RenderQueue
{
public:
RenderQueue();
~RenderQueue();
void Insert(IRenderable * object);
void Remove(IRenderable * object);
protected:
struct Compare
{
bool operator () (const IRenderable * lhs, const IRenderable *
rhs);
};
typedef std:
riority_queue<IRenderable *,
std::vector<IRenderable *>,
Compare > Queue;
Queue m_queue;
private:
};
#endif // RENDERQUEUE_H
//------------------------------------------------------------------------------
void RenderQueue::Remove(IRenderable * object)
{
Queue::container_type::iterator it = m_queue.c.end();
if( !m_queue.empty() )
{
it = std::find(m_queue.c.begin(), m_queue.c.end(), object);
}
if( it != m_queue.c.end() )
{
m_queue.c.erase(it)
}
}
I am trying to come up with a means to remove an object from the
queue. The only available method I see is pop, which will not suffice.
I want to search through it and find the object to remove.
I imagine I need access to the underlying container. How can I get it?
My compiler complains that member c is protected.
Here is the code I tried and failed with:
#ifndef RENDERQUEUE_H
#define RENDERQUEUE_H
// EngineX Includes
#include "IRenderable.h"
// Standard Includes
#include <queue>
//------------------------------------------------------------------------------
class RenderQueue
{
public:
RenderQueue();
~RenderQueue();
void Insert(IRenderable * object);
void Remove(IRenderable * object);
protected:
struct Compare
{
bool operator () (const IRenderable * lhs, const IRenderable *
rhs);
};
typedef std:
std::vector<IRenderable *>,
Compare > Queue;
Queue m_queue;
private:
};
#endif // RENDERQUEUE_H
//------------------------------------------------------------------------------
void RenderQueue::Remove(IRenderable * object)
{
Queue::container_type::iterator it = m_queue.c.end();
if( !m_queue.empty() )
{
it = std::find(m_queue.c.begin(), m_queue.c.end(), object);
}
if( it != m_queue.c.end() )
{
m_queue.c.erase(it)
}
}