由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++ 菜鸟问一个关于template 的问题。
相关主题
一个partial specialization的问题stl 的 member type 看起来挺头大的
sgi stl 源代码一问c++ interview: iterator 和 pointer区别?
C++ question about template typedef这两个地方是否需要typename?
请教 C++ std::list iterator 对 template class pointer 的应用问题a c++ question
STL感觉实在太变态了template question
C++里get array size的问题 (转载)vector::iterator不对
[菜鸟问题]类模板问题template 疑问
c++ template question:请教一下这个template function在gcc下要怎么修改
相关话题的讨论汇总
话题: tp话题: typedef话题: iterator话题: template话题: pointer
进入Programming版参与讨论
1 (共1页)
e******o
发帖数: 757
1
如果要写一个template function, 比如
template //It 是一个pointer 或iterator,
void foo(It, iter)
{
//
? a = *iter;
//
}
那么应该怎样定义 a.
f*****e
发帖数: 2992
2
试试
auto a = *iter;

【在 e******o 的大作中提到】
: 如果要写一个template function, 比如
: template //It 是一个pointer 或iterator,
: void foo(It, iter)
: {
: //
: ? a = *iter;
: //
: }
: 那么应该怎样定义 a.

t****t
发帖数: 6806
3
if you are not using c++11 (i.e. "auto a=*iter" doesn't work), you can try:
typename std::iterator_traits::value_type a=*iter;
if It is really iterator or pointer.

【在 e******o 的大作中提到】
: 如果要写一个template function, 比如
: template //It 是一个pointer 或iterator,
: void foo(It, iter)
: {
: //
: ? a = *iter;
: //
: }
: 那么应该怎样定义 a.

c*******y
发帖数: 1630
4
good, works for both
/usr/include/c++/4.6.3/bits/stl_iterator_base_types.h
/// Partial specialization for pointer types.
template
struct iterator_traits<_Tp*>
{
typedef random_access_iterator_tag iterator_category;
typedef _Tp value_type;
typedef ptrdiff_t difference_type;
typedef _Tp* pointer;
typedef _Tp& reference;
};
/// Partial specialization for const pointer types.
template
struct iterator_traits
{
typedef random_access_iterator_tag iterator_category;
typedef _Tp value_type;
typedef ptrdiff_t difference_type;
typedef const _Tp* pointer;
typedef const _Tp& reference;
};

【在 t****t 的大作中提到】
: if you are not using c++11 (i.e. "auto a=*iter" doesn't work), you can try:
: typename std::iterator_traits::value_type a=*iter;
: if It is really iterator or pointer.

t****t
发帖数: 6806
5
since you are using 4.6, i suggest you enable c++11 mode and use "auto",
which is much much cleaner...

【在 c*******y 的大作中提到】
: good, works for both
: /usr/include/c++/4.6.3/bits/stl_iterator_base_types.h
: /// Partial specialization for pointer types.
: template
: struct iterator_traits<_Tp*>
: {
: typedef random_access_iterator_tag iterator_category;
: typedef _Tp value_type;
: typedef ptrdiff_t difference_type;
: typedef _Tp* pointer;

e******o
发帖数: 757
6
thanks very much. I just tried, and it did work.
1 (共1页)
进入Programming版参与讨论
相关主题
请教一下这个template function在gcc下要怎么修改STL感觉实在太变态了
templateC++里get array size的问题 (转载)
c++ pointers are iterators, why?[菜鸟问题]类模板问题
今天没有上班,说一个FEATURE吧,concept litec++ template question:
一个partial specialization的问题stl 的 member type 看起来挺头大的
sgi stl 源代码一问c++ interview: iterator 和 pointer区别?
C++ question about template typedef这两个地方是否需要typename?
请教 C++ std::list iterator 对 template class pointer 的应用问题a c++ question
相关话题的讨论汇总
话题: tp话题: typedef话题: iterator话题: template话题: pointer