2016-08-01 29 views
-4

insert() für eine Menge nimmt die Parameter: (set :: iterator, int) Der Iterator-Parameter ist optional einzugeben, und so nehme ich an, dass es einen Standardwert in seiner Implementierung haben muss.C++ STL zuordnen und setzen die containers 'insert() Funktion verletzt die Regeln für die Standardparameter?

Sind nun nicht Parameter mit Default-Wert am Ende? Soll die Insert-Funktion nicht wie folgt aufgerufen werden: insert (int, set :: iterator) oder insert (int)?

Oder verwendet die Implementierung Funktion Überladung? Wenn ja, warum nicht einfach Standardparameter dafür verwenden?

+3

Versuchen Sie, die Dokumente zu lesen, erklären sie Dinge wie diese. –

+0

Falls Sie Schwierigkeiten haben, die Dokumente zu finden, ist [cppreference] (http://en.cppreference.com/w/) eine gute Quelle. – jaggedSpire

Antwort

3

Es ist kein Standardparameter, es gibt einfach multiple function overloads.

std::pair<iterator,bool> insert(const value_type& value); 

template< class P > 
std::pair<iterator,bool> insert(P&& value); 

std::pair<iterator,bool> insert(value_type&& value); 

iterator insert(iterator hint, const value_type& value); 

iterator insert(const_iterator hint, const value_type& value); 

template< class P > 
iterator insert(const_iterator hint, P&& value); 

iterator insert(const_iterator hint, value_type&& value); 

template< class InputIt > 
void insert(InputIt first, InputIt last); 

void insert(std::initializer_list<value_type> ilist); 

insert_return_type insert(node_type&& nh); 

iterator insert(const_iterator hint, node_type&& nh);