【问题标题】: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)?

或者实现是否使用函数重载?如果是这样,为什么不为此使用默认参数?

【问题讨论】:

  • 尝试阅读文档,他们解释了这样的事情。
  • 如果您在查找文档时遇到困难,cppreference 是一个很好的来源。

标签: 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    相关资源
    最近更新 更多