In einem solchen Code festgelegt zu vermeiden:Ist das legal von der Erstellung tatsächlichen Kopien Vergleicher Objekt
Comparator comp(3);
set<string, Comparator> s1(comp);
set<string, Comparator> s2(comp);
set<string, Comparator> s3(comp);
set<string, Comparator> s4(comp);
die tatsächliche Instanz der Vergleicher (nämlich comp) bei jeder Erstellung eines Satzes Objekt als cpp kopiert Referenzzustände
der Behälter eine interne Kopie von Alloc und comp hält, die verwendet werden, Speicher zuzuteilen und die Elemente während seiner gesamten Lebensdauer zu sortieren.
So fragen wir, wenn dies in C++
legal ist#include <set>
#include <iostream>
struct A {
int i = 0;
bool operator()(int a, int b)
{
++i;
return a < b;
}
};
int main()
{
A a;
std::set<int, A&> s1({1, 2, 3}, a);
std::set<int, A&> s2({4, 5, 6}, a);
std::cout << a.i;
}
Vielen Dank im Voraus.
_'So wir gefragt, ob dies in C++ legal '_ Mindestens es [kompiliert fein] (http://ideone.com/O85lFk) und tut, was erwartet wird. –
Ja, wir bemerkten :) –
@ πάνταῥεῖ: Das ist überhaupt kein gültiges Argument in C++ –