2017-05-27 3 views
1

Ich habe einen C++ - Code gelesen, der eine Hash-Tabelle implementiert. Obwohl es ziemlich klar ist, was der folgende Code tut, konnte ich mir nicht vorstellen, was die empty geschweiften Klammern {} dort tun. Ich habe versucht, online nachzusehen, konnte aber nichts finden, wahrscheinlich sogar, weil der Name dieses Ausdrucks mir unbekannt ist.Was bedeutet {} vor den Argumenten in einem Funktionsaufruf? Schlüssel_gleich {} (Schlüssel1, Schlüssel2);

Ich denke, es hat etwas damit zu tun, dass die std :: equal-Funktion typedef'ed als key_equal ist, aber wie gesagt, ich konnte nichts finden, was damit zusammenhängt.

Dies war ein Teil der Hausaufgaben und wurde von jemandem geschrieben, den ich nicht kenne, also ist es wichtiger, die Funktionalität zu verstehen, als die Notwendigkeit, dies zu tun, obwohl ich Kommentare darüber schätzen würde.

Vielen Dank im Voraus!

using key_equal = std::equal_to<key_type>; 

    bool equals(const key_type& key1, const key_type& key2) const { 

    return key_equal{}(key1, key2); } 

Antwort

2

key_equal{} instanziiert die Art der braced-init-list Syntax; Der Typ implementiert dann operator() mit zwei Argumenten, und dieser Operator wird aufgerufen.

+0

Ich habe nie erfahren, dass es sich um eine Klasse handelt, die keine Funktion ist und mit einer leeren Initialisierungsliste initialisiert wird. Danke –

+1

Hier ist mehr relvant Link: [Initialisierung der Liste] (http://en.cppreference.com/w/cpp/language/list%20initialization). Es ist keine 'std :: initializer_list', da es Inhalte verschiedener Typen enthalten könnte, aber eine' stacked-init-list'. – HolyBlackCat

+0

Danke, du hast recht; Ich habe den Link repariert. – gimpf

Verwandte Themen