Ho una serie di shared_ptr
e vorrei trovare un valore in esso:Trova un valore in un insieme di shared_ptr
typedef std::shared_ptr<int> IntPtr;
struct Compare {
bool operator() (const IntPtr& a, const IntPtr& b) {
return *a < *b;
}
};
std::set<IntPtr, Compare> s;
auto x = std::make_shared<int>(3);
s.insert(x);
bool found = s.find(std::make_shared<int>(3)) != s.end();
Sta funzionando, ma non efficiente - ha bisogno di nuovo un puntatore temperatura ogni volta quando si cerca di trovare un valore.
Esiste un altro modo?
Sembra che Searching in a set of shared_ptr<QString> abbia alcune idee che potrebbero essere d'aiuto?
_ "è necessario creare un nuovo puntatore temporaneo ogni volta che si tenta di trovare un valore." _ Che cosa significa? –
È l'argomento di 's.find', lo' std :: make_shared (3) ' – Gombat
C'è anche' std :: find_if', e alla fine potresti usare un set non ordinato? –