看一看...... http://en.cppreference.com/w/cpp/container/vector/insert 编译器如何区分第3和第4,即在是否制作所需int的no.of副本或填充所提供范围内的容器之间。
// 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 );
提前谢谢。
答案 0 :(得分:2)
这是编译器(或库编写者)的问题,而不是
你的。标准说如果InputIt
类型是这样的
可以调用表单3,行为应该好像
形式3被称为。通常,某种形式的模板
使用元编程,使模板起作用
采用迭代器将转发到两个不同的函数,选择
通过基于InputIt
是否可以的重载决策
隐式转换为size_type
或不转换(C ++ 03),或者是否
InputIt
将是一个合法的迭代器(C ++ 11)。
答案 1 :(得分:0)
iterator
和const_iterator
根本不是同一个类。然后编译器可以推断它必须使用的重载版本。
编辑:第四个版本中的第二个和最后一个参数必须相同,并且必须遵循InputIterator
的概念。这是不 size_t的情况,没有歧义。