如何使一个函数(是否有模板)接受任何迭代器,但仅接受c ++中的迭代器

时间:2018-12-30 16:45:37

标签: c++ function iterator parameter-passing

是否可以创建一个接受任何迭代器(std :: vector :: iterator等),但不接受其他任何东西(int,bool,char等)的函数? 我正在尝试创建一个“ bignum”类,该类具有许多内置数字类型的功能。我重载了operator +以将两个数字类型(bignum,int,double,float)加在一起,并且效果很好,但我也想实现另一个重载,以便operator +在迭代器上工作,其中operator +在迭代器上的作用并且我的bignum将产生一个具有与bignum值相同的偏移量的迭代器(类似于将整数添加到迭代器)。 我在这个主题上到处搜索,但是发现的一切都与找出传递给函数的迭代器类型或执行的操作类似:

template <typename Iterator>
Iterator function(Iterator begin, Iterator end)
{
//do something with begin and end
}

问题是类型迭代器可以是任何类型,包括int,double,float,bignum,并且它没有专门获得迭代器,所以我不知道该如何专门为迭代器做一个手动为所有容器。我还希望它可以与所有类型的可迭代迭代器一起使用,不仅可以使用特定的iterator_tag(random_access_tag等),而且如果无法实现,我想检查所有iterator标记也更容易。

0 个答案:

没有答案