Cześć, kolejne ćwiczenie, które powinno działać, ale z jakiegoś powodu nie działa.
Mam wektor obiektów. Muszę go posortować. Klasa jest prosta:
class Noisy
{
public:
Noisy(const int & id): m_id(id)
{
}
Noisy(const Noisy & obj)
{
m_id = obj.m_id;
}
virtual ~Noisy()
{
}
bool operator<(const Noisy & obj) const
{
return m_id < obj.m_id;
}
friend ostream & operator <<(ostream & os, const Noisy & obj)
{
return os << "Noisy " << obj.m_id;
}
private:
int m_id;
};
Całość sortuję tak:
std::vector<Noisy> v;
//tutaj wypełniam wektor
//i sortowanie
sort(v.begin(), v.end());
Z tego, co wiem, to przeciążenie operatora < powinno tutaj wystarczyć. I do operatora faktycznie wchodzi, ale po funkcji sort, wektor jest nadal nie posortowany. Tak samo działa dla deque, ale np. list.sort() zachowuje się już poprawnie. Co tu jest nie tak?