为什么在 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 来保存它吗?
最佳答案
常量对于值类型无关紧要,因为值意味着一个拷贝。 std::iterator_traits<const T*>::reference
是 const T&
但是。
例如,你可以写这个函数:
template <class Iterator>
typename std::iterator_traits<Iterator>::value_type getValue(Iterator i)
{
return *i;
}
无论 Iterator 是否为 const T *
都可以正常工作或 T *
.
关于c++ - const_iterator 和 const_iterator::value_type 的 constness,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12819405/