在C ++模板中,我很难用正确的size_type
定义变量。基本上,这将是容器的索引类型。我知道int
可以使用,但希望它采用干净的形式。
template<typename ForwardIt>
void test(ForwardIt it) {
// this yields the underlying type
decltype(typename std::iterator_traits<ForwardIt>::value_type()) T;
// what I would like is something like above, but yielding the
// correct size_type for the container.
// Something like this but with the type extracted from ForwardIt:
std::vector<int>::size_type i;
...
}
答案 0 :(得分:4)
详细说明@NathanOliver所说的内容:迭代器没有size_type
;它们有一个difference_type
,代表两个迭代器之间的距离。容器有一个size_type
。
迭代器不必具有关联的容器,因此无法仅从迭代器中获取“容器的size_type
”。