Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模板<;类迭代器>;这里是预定义的迭代器还是可以使用任何名称?_C++_Templates_Iterator - Fatal编程技术网

C++ 模板<;类迭代器>;这里是预定义的迭代器还是可以使用任何名称?

C++ 模板<;类迭代器>;这里是预定义的迭代器还是可以使用任何名称?,c++,templates,iterator,C++,Templates,Iterator,以代码为例: template< class Iterator> Iterator calc( Iterator a , Iterator b ){ if( *a == 'c' && a != b ) ++a ; return a ; } 这两个例子都一样吗?这两个例子完全一样,是的。迭代器的名称Iterator只会让代码的读者更清楚地知道calc希望传递的是哪种类型的参数,而T并不特别有启发性。无论哪种方式,模板参数的名称只是一个名称——它没有其

以代码为例:

template< class Iterator>
Iterator calc( Iterator a , Iterator b ){   
   if( *a == 'c' && a != b ) ++a ;
   return a ;
}

这两个例子都一样吗?

这两个例子完全一样,是的。迭代器的名称
Iterator
只会让代码的读者更清楚地知道
calc
希望传递的是哪种类型的参数,而
T
并不特别有启发性。无论哪种方式,模板参数的名称只是一个名称——它没有其他意义


< C++概念提案(你最初把你的问题标记为,但与问题不严格相关)会让你写出一些更有意义的东西:

template <Input_iterator T>
T calc(T a, T b) { ... }
模板
T计算(ta,tb){…}
<>这将影响<代码> Calc < /C> >的超载分辨率,因此<>代码> Calc(1, 2)现在甚至不考虑这个函数——而不是在编写<代码> *<代码>时抛出编译错误。 但即使在这里,
T
也只是一个名字,仅此而已

template <Input_iterator T>
T calc(T a, T b) { ... }