-1

看看这个...... http://en.cppreference.com/w/cpp/container/vector/insert 编译器如何区分第三个和第四个,即是否制作副本所需的 int 或填充,容器在提供的范围内。

// 3rd
iterator insert( const_iterator pos, size_type count, const T& value );

// 4th
template< class InputIt >
iterator insert( const_iterator pos, InputIt first, InputIt last ); 

先感谢您。

4

2 回答 2

2

这是编译器(或库编写者)的问题,而不是您的问题。该标准说,如果InputIt类型是可以调用表单 3 的,那么行为应该就像调用了表单 3 一样。通常,使用某种形式的模板元编程,以便采用迭代器的模板函数将转发到两个不同的函数,由重载决策根据是否InputIt可以隐式转换为 a size_type(C++03) 或是否 InputIt将是一个合法的迭代器(C++ 11)。

于 2012-12-12T15:27:14.167 回答
0

Aniterator和 aconst_iterator根本不是同一个类。然后编译器就可以毫无问题地推断出它必须使用的重载版本。

编辑:第四个版本中的第二个和最后一个参数必须相同,并且必须遵循InputIterator. 这不是size_t 的情况,没有歧义。

于 2012-12-12T15:12:15.497 回答