【发布时间】:2012-09-30 22:16:13
【问题描述】:
为什么在 STL 中
std::iterator_traits<const T*>::value_type
与
类型相同std::iterator_traits<T*>::value_type
为什么要这样设计?第一个不应该是const T,第二个不应该是T吗?您应该如何采用迭代器的底层 const 正确类型?我知道您可以编写自己的模板类和专业化并从中获取它
std::iterator_traits<const T*>::pointer
但是不应该有一个成员 typedef 来保存它吗?
【问题讨论】:
-
您能解释一下“采用底层的 const 正确类型”吗? “拿”是什么意思?
-
我的意思是,如果我想从迭代器或从 iterator_traits 作为成员 typedef 获取“const T”,当迭代器指向 const 类型时。
-
我明白了。不过,我不确定会有什么好的用例。可以举个例子吗?
-
假设您想要获取类型 iterator_traits
::value_type::some_member_const_dependent_type 并且如果它是一个 const 迭代器,您希望它是 const。 -
T 的 constness 不会影响 T::type,因此将 iterator_traits
::value_type 设为 const 对此无济于事。
标签: c++ iterator const-iterator iterator-traits