URGENT: <algorithm> lower_bound() problem

I am currently working on a simulation program that uses discrete event simulation. Basically, the program generates events (in this case, the arrival and departure of customers in a store). So the events are placed in a priority queue, ordered by the times that the events are to occur (i.e. an event that is supposed to occur at time 25 would have a higher priority than an event that is supposed to occur at time 30). To make this ordering easy, I decided to use the **vector** STL to implement the queue.

To insert things in the order I want, I use the <algorithm> function, *lower_bound(line.begin(), line.end(), e)*, where *line* is the vector, and *Event* e* is inserted in the appropriate location, based on ascending event time order. I have used *lower_bound()* before, and for it to work, I had to overload the == and < operators for the object (in this case, *Event*). However, when I run my program with the debugger, the overloaded == and < are never accessed and, consequently, the events are not ordered. Here are the relevant sections of code...

**In Simulation class...**

Code:

`void Simulation::schedule(Event *e) {`

//Create an iterator for the vector queue

vector<Event *>::iterator pos;

//Determine the position to insert the event

pos = lower_bound(eQueue.begin(), eQueue.end(), e);

//Insert the event at the determined position

eQueue.insert(pos, e);

}

**In Event class...**

Code:

`bool Event:operator==(const Event& rhs) const { `

//Return true if the event times are equal, false otherwise

return (time == rhs.time);

}

bool Event:operator<(const Event& rhs) const {

//Return true if this event time is less than rhs event time,

// false otherwise

return (time < rhs.time);

}

Do you have any idea why the *lower_bound()* function isn't looking for those two operators? Can you think of a better way to do this? Any help will be greatly appreciated. Thank you in advance!