C++迭代器类模板形参问题 10
//List节点的定义template<classT>struct__list_node{typedefvoid*void_pointer;void_pointernex...
// List节点的定义
template <class T>
struct __list_node {
typedef void* void_pointer;
void_pointer next;
void_pointer prev;
T data;
};
// List迭代器的定义
template<class T, class Ref, class Ptr>
struct __list_iterator {
// 这三个typedef是为了简化后面的代码书写
typedef __list_iterator<T, T&, T*> iterator;
typedef __list_iterator<T, const T&, const T*> const_iterator;
typedef __list_iterator<T, Ref, Ptr> self;
...
typedef __list_node<T>* link_type;
...
link_type node;
...
return *this
}
这是list迭代器的stl源码,类本身只有一个成员node;其他都是些函数,谁能解释下上面3个__list_iterator<>里3个参数各是什么意思。 展开
template <class T>
struct __list_node {
typedef void* void_pointer;
void_pointer next;
void_pointer prev;
T data;
};
// List迭代器的定义
template<class T, class Ref, class Ptr>
struct __list_iterator {
// 这三个typedef是为了简化后面的代码书写
typedef __list_iterator<T, T&, T*> iterator;
typedef __list_iterator<T, const T&, const T*> const_iterator;
typedef __list_iterator<T, Ref, Ptr> self;
...
typedef __list_node<T>* link_type;
...
link_type node;
...
return *this
}
这是list迭代器的stl源码,类本身只有一个成员node;其他都是些函数,谁能解释下上面3个__list_iterator<>里3个参数各是什么意思。 展开
展开全部
template<class T, class Ref, class Ptr>上已经解释了,原始类型,引用,指针,区别只在是否有const.
更多追问追答
追问
typedef __list_iterator与typedef __list_iterator在运行的时候怎么选择的机制啊
追答
这两个会同时存在,不需要选择?
list::const_iterator
list::iterator.
这不是函数的参数,不会进行类型推测
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询