Warum kein transparentes C ++ 1x std :: map :: at?

8

Gibt es einen Grund dafür, dass transparent ( template <class K> at(K&& key); ) in std::map fehlt?

    
bobah 23.11.2016, 14:33
quelle

1 Antwort

7

Ich vermute, dass std::map::at() eine "bounds-checked" Version von std::map::operator[]() sein muss. Die Bereitstellung einer transparenten Version von std::map::operator[]() erzwingt eine zusätzliche Anforderung für std::map::key_type und den Abfrageschlüsseltyp K . Wenn der Abfrageschlüssel nicht in der Map enthalten ist, muss er eingefügt werden (mit dem standardmäßig konstruierten Wert), was bedeutet, dass std::map::key_type muss aus dem Abfrage-Schlüsseltyp konstruierbar sein.

    
Leon 23.11.2016, 15:19
quelle

Tags und Links