Suchen Sie einen Wert in einem Satz von shared_ptr

8

Ich habe eine Menge shared_ptr und möchte darin einen Wert finden:

%Vor%

Es funktioniert, aber nicht effizient - es muss jedes Mal ein temporärer Zeiger neu erstellt werden, wenn versucht wird, einen Wert zu finden.

Gibt es einen anderen Weg dafür?

Sieht aus wie Suchen in einer Gruppe von shared_ptr & lt; QString & gt; hat einige Ideen, die helfen könnten?

    
Deqing 16.09.2015, 13:46
quelle

2 Antworten

14

(In C ++ 14) Machen Sie Ihren Komparator zu einem transparenten one und definieren Sie zusätzliche Logik für den Vergleich gespeicherter shared_ptr s mit int s:

%Vor%

DEMO

    
Piotr Skotnicki 16.09.2015, 13:52
quelle
0

Mit einem single-threaded Programm können Sie den Overhead auf eine einzige globale Zuweisung reduzieren:

%Vor%

Haftungsausschluss: Der Code wurde nicht von den Händen des Compilers berührt.

Beim Threading sollten Sie das obige Verfahren als Methode einer Klasse betrachten, mit p als Mitglied, und dann eine threadlokale Statik dieser Klasse erstellen.

    
Cheers and hth. - Alf 16.09.2015 13:53
quelle

Tags und Links