2016-11-07 10 views
0

i ein Neuling bin multi_index zu steigern,Anfügen Index auf einen Multi-Index-Container

und versucht derzeit, einen Multi-Index Container zu erstellen, für die ich in der Lage sein wird, Indizes zu definieren, nachdem der Behälter deklariert wird.

Insbesondere möchte ich eine Reihe von verschiedenen MySQL Dbs laden und benötigen daher eine generische Struktur, in der Schlüssel a-priori nicht bekannt sind. Kann boost :: multi_index eine solche Funktionalität unterstützen? Ich habe versucht, die "ctor_args_list" -Option zu verwenden, aber es scheint für diesen Fall nicht zu funktionieren.

Vielen Dank!

Antwort

1

Genau genommen ist die Definition von boost::multi_index_container ein Geschäft zur Kompilierung, daher können Sie nicht sagen, Indizes zur Laufzeit hinzufügen oder entfernen. Der nächste, den Sie wahrscheinlich erreichen können, ist, dass Sie eine vordefinierte Nummer von ordered_non_unique<std::function<int(const element&)>> oder ähnlichem definieren und dann die Bestellfunktionen zur Konstruktionszeit bereitstellen (mit ctor_arg_list). Das bedeutet, dass Sie auf eine maximale Anzahl von Indizes beschränkt sind und die Ordnungsfunktionen eine starre Form haben müssen (im Beispiel werden sie an das Element übergeben und geben ein konventionelles int zurück, das die Reihenfolge ausdrückt, die angewendet wird). Gerne helfen Sie zurück, wenn Sie diesen Weg nehmen.