Funktionszeiger für std :: unordered_map

8

Es gibt Seiten wie diese:

Ссылка

Das heißt, man kann anstelle einer Klasse einen Funktionszeiger für das Argument Hash und Pred der Klassenvorlage std::unordered_map angeben. Es gibt jedoch keine Beispiele, und ich habe es nicht geschafft, diese Funktion zum Funktionieren zu bringen, wenn es überhaupt möglich ist. Nicht funktionierendes Beispiel:

%Vor%     
user1095108 11.03.2013, 08:33
quelle

1 Antwort

10
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ qstnhdr ___ Funktionszeiger für std :: unordered_map ___ tag123c11 ___ C ++ 11 ist eine 2011 verabschiedete Version des C ++ - Sprachstandards. Sie hat viele Änderungen und Ergänzungen der Kernsprache sowie der verbesserten und erweiterten C ++ - Standardbibliothek vorgenommen. ___ tag123std ___ std ist der Name des Namespace, der die C ++ - Standardbibliothek enthält. Verwenden Sie mit dem [C ++] -Tag ___ qstntxt ___

Es gibt Seiten wie diese:

Ссылка

Das heißt, man kann anstelle einer Klasse einen Funktionszeiger für das Argument %code% und %code% der Klassenvorlage %code% angeben. Es gibt jedoch keine Beispiele, und ich habe es nicht geschafft, diese Funktion zum Funktionieren zu bringen, wenn es überhaupt möglich ist. Nicht funktionierendes Beispiel:

%Vor%     
___ answer1533475 ___
  

Das heißt, man kann anstelle einer Klasse

einen Funktionszeiger angeben

Nein, das ist ein Missverständnis. Sie können anstelle des -Objekts einen Funktionszeiger für den -Konstruktor bereitstellen. Der Vorlagenparameter ist immer noch ein Typ - in diesem Fall der Typ eines Funktionszeigers. Du musst also

schreiben %Vor%

Ihre Standardbibliothek definiert einen Standardwert für den ersten Parameter, aber dieser Standardwert ist nicht standardisiert. Offenbar gibt es keine Möglichkeit, den herstellerspezifischen Standardwert für n beizubehalten und gleichzeitig die Werte der Funktoren festzulegen. Meine Verwendung von 4 ist hier ziemlich willkürlich.

Sie sollten stattdessen die Verwendung von standardkonstruierbaren Funktionsobjekten in Betracht ziehen. Nicht nur das wird Ihnen erlauben, ohne Angabe der minimalen Bucket-Größe wegzukommen, es wird auch potentiell schneller sein, da Funktoren viel einfacher für den Compiler zu inlinern sind.

    
___
sellibitze 11.03.2013, 09:12
quelle

Tags und Links