【问题标题】:C++ STL map and set containers' insert() function violating the rules for default parameters?C++ STL 映射和设置容器的 insert() 函数违反默认参数规则?
【发布时间】:2016-08-01 15:26:08
【问题描述】:
insert() for a set 接受参数: (set::iterator, int)
迭代器参数是可选的,所以我假设它在实现中必须有一个默认值。
现在,默认值的参数不应该放在最后吗?插入函数不应该这样调用吗:insert(int, set::iterator) 或 insert(int)?
或者实现是否使用函数重载?如果是这样,为什么不为此使用默认参数?
【问题讨论】:
标签:
c++
parameters
stl
optional-parameters
【解决方案1】:
不是默认参数,简单来说就是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);