Verschiebe alle Elemente, die eine Bedingung erfüllen, von einem Container zum nächsten, d. h. ich suche nach einer Art "move_if"

7

Gegeben

%Vor%

Ich möchte verschieben alle Elemente e , die eine Bedingung erfüllen cond(e) von first bis second , d. h. etwas wie

%Vor%

Ich konnte dies mit der Algorithmenbibliothek nicht feststellen. Also, wie kann ich das tun?

    
0xbadf00d 22.08.2015, 11:55
quelle

3 Antworten

22

Wenn die verschobenen Elemente in first bleiben können, verwenden Sie einfach copy_if mit move_iterator .

%Vor%

Wenn die verschobenen Elemente aus first gelöscht werden sollen, würde ich

machen %Vor%

Oder partition_copy mit einem move_iterator , gefolgt von der Zuweisung:

%Vor%     
T.C. 22.08.2015 12:12
quelle
1

Der Grund, warum move_if nicht existiert, liegt darin, dass die Bibliothek aufgebläht würde. Benutze entweder copy_if mit move iterator oder schreibe es selbst.

%Vor%

Hier ist eine Implementierung von Jonas_No gefunden bei channel9.

%Vor%     
user5254963 22.08.2015 12:12
quelle
1

@ T.C. hat eine perfekt funktionierende Lösung zur Verfügung gestellt. Auf den ersten Blick kann man jedoch nicht verstehen, was dieser Code beabsichtigt. Es mag also nicht perfekt sein, aber ich bevorzuge etwas wie dieses:

%Vor%     
0xbadf00d 22.08.2015 12:35
quelle

Tags und Links