c++-C++模板函数重载的一个问题?

问题描述

C++模板函数重载的一个问题?
这两个函数的作用都是在迭代器pos前面插入一些值
我的想法是第一个函数接受的是两个迭代器lhs和rhs
第二个函数接受的是一个插入的值val和值的个数n

但是我发现当我这么写:insert(vec.begin()510) 时
我想的是插入5个10进去,也就是实例化第二个
但是迭代器会自动帮我调用第一个

请问我应该怎么做才能让它调用第二个?

template
iterator list insert(iterator posInputIterator lhsInputIterator rhs);

template
iterator list insert(iterator possize_t nconst T& val);

解决方案

一个由模板函数引起的问题
一个函数重载问题—指针和整数问题
C++中的函数重载与模板

解决方案二:
你这是第二个函数内部调用了第一个实现来实现第二个的功能

解决方案三:
vector 是啥类型的 ...

给段程序呗

时间: 2024-07-31 19:57:06

c++-C++模板函数重载的一个问题?的相关文章

函数重载-运行一个包含重载函数的c++程序,报出如下错误是什么原因??

问题描述 运行一个包含重载函数的c++程序,报出如下错误是什么原因?? 源码如下: #include "stdafx.h" #include using namespace std; unsigned long left(unsigned long num, unsigned ct); char * left(const char * str, int n = 1); int main(int argc, char* argv[]) { char * trip = "Hawa

ecshop小京东模板切换到smarty3.13之模板函数,用模板函数替换楼层

ecshop小京东的模板中用到了楼层的概念,看下了模板每个楼层都写了一下,用几个楼层就写了几段,个人感觉这样的有点冗余,不如做个函数,直接循环一下 有两种方法,第一种是:写个函数来实现楼层的显示,第二种是直接做一个模板函数,直接在页面上循环,第一种方法,本人觉得麻烦,就试了第二种,居然成功了 smarty2好像不支持 模板函数,下面提供一个官方的例子, {* 定义函数 *} {function name=menu level=0} <ul class="level{$level}"

c++-重载一个模板函数还是特例化,该如何选择?

问题描述 重载一个模板函数还是特例化,该如何选择? 谢谢!~~~~~~~~~~~~~~~~~~~~~~~~~~~ 解决方案 看这个参数是否需要继续保持泛型.如果不需要,就特化. 解决方案二: 主要还是你需要对某个类型做一些特别处理,那么就会用特例化. 特例化版本本质是一个实例,而不是函数重载.因此它不会影响函数匹配.

《C和C++代码精粹》——1.11 函数重载和函数模板

1.11 函数重载和函数模板 C和C++代码精粹程序清单1.4中的交换函数(swap)只有在交换整数时才有用.如果要交换两个任何系统预定义的数据类型中的对象该么办呢?C++允许定义多个同名函数,只要它们的特征不同.因此就可以为所有系统预定义的数据类型定义一个交换函数: void swap(char &,char &); void swap(int &,int &); void swap(long &,long &); void swap(float &

c++ 函数模板重载-关于c++中函数模板的重载问题

问题描述 关于c++中函数模板的重载问题 直接上代码(简单),enter code here template< class T > void test(T x){ cout<<x<<endl; } void test(int); int main(){ int x = 1; test(x); } 上述程序使用非模板函数对函数模板test进行重载:按照书中的说法-这个非模板函数可以只声明原型,然后借用模板中定义的函数体. 但是链接的时候找不到那个非模板函数的定义(使用的

C++的函数重载

--每个现象后面都隐藏一个本质,关键在于我们是否去挖掘 写在前面: 函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题 1.声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了) 2.当我们调用一个重载的函数时,又是如何去解析的?(即怎么知道调用的是哪个函数呢) 这两个问题是任何支持函数重载的

C++文件头,命名空间,new和delete,内联函数,引用,函数重载,构造函数和析构函数,深拷贝和浅拷贝,explict,this指针

   目  录 1       开始学习C++.............................................................................................................. 4 1.1       C++的头文件...............................................................................................

定义模板——函数模板和类模板

面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况.不同之处在于:OOP能处理类型在程序运行之前都未知的情况:而在泛型编程中,在编译时就能获知类型了. 前面介绍的容器.迭代器和算法都是泛型编程的例子.当我们编写一个泛型程序时,是独立与任何特定类型来编写代码的.当使用一个泛型程序时,我们提供类型或值,程序实例可在其上运行. 模板是泛型编程的基础.一个模板就是一个创建类或函数的蓝图或者说公式.当使用一个vector这样的泛型类型,或者find这样的泛型函数时,我们提供足够的信息,将

为什么这个不能实现函数重载?

问题描述 为什么这个不能实现函数重载? public int hanshu(int a) { return a; } public void hanshu(int b) { Console.WriteLine(b); } 它们不是参数返回值都不同么? 解决方案 C#规定,函数重载必须是参数不同,相同参数不同返回值没法构成重载,非但没法构成重载,甚至编译都不通过. 所谓参数不同,是指参数个数不同,或者/并且参数在相同顺序上的类型不同,光形参名不同不算参数不同. 顺便说下,IL层面是支持不同返回值相