You may try overriding operator<(const T& a, const T& b) to impose an order on those attributes, so std::set:find(const T& x) will return the first no less than x.
Ej:
bool operator<(const Car& a, const Car& b)
{
return a.color cars;
Car x;
cars.find(x);