J'ai un vecteur de classes de conteneurs commandés où je dois connaître l'indice du conteneur qui a un élément donnéprédicat stl avec différents types
, je voudrais faire ce qui suit, mais évidemment n » t travail. Je pourrais créer un conteneur factice pour héberger la date à trouver, mais je me demandais s'il y avait une meilleure façon.
struct FooAccDateComp
{
bool operator()(const Container& d1, const MyDate& f1) const
{ return d1->myDate < f1; }
};
class Container
{
MyDate myDate;
...
};
vector<Container> mystuff;
MyDate temp(2008, 3, 15);
//add stuff to variable mystuff
int index = int(upper_bound(events.begin(), events.end(),temp, FooAccDateComp())-events.begin());
EDIT: La classe conteneur peut contenir d'autres dates.
Modifiez upper_bound à find_if, et cela devrait fonctionner correctement. Cela dit, pourquoi n'utilisez-vous pas une carte ici? –
@Billy: un vecteur trié peut être plus rapide qu'une carte, si vous ne le changez pas très souvent. –
@Billy: les complexités sont très différentes, 'upper_bound' est O (log N) alors que' find_if' est O (N). –