gpt4 book ai didi

c++ - 什么时候使用迭代器的 `value_type`?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:52 25 4
gpt4 key购买 nike

我试图了解何时实际使用了 iterator::value_type

因为,迭代器的所有运算符,似乎只使用iterator::pointeriterator::reference

问题 iterator::value_type 是否真的用于某些事情?

附加问题:迭代器是否继承自

std::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t, bool*, bool&>

提出一些语义问题?

编辑: 要理解我为什么问这个问题,是因为我正在为一种类型的迭代器工作,pointerreference 是代理类。

最佳答案

我可以考虑在通用代码中使用它。假设您在 C++11 中编写一个对范围求和的通用函数。你可以把它写成

template<typename It>
auto sum(It begin, It end) -> typename It::value_type
{
typename It::value_type _sum{};
// compute the sum
return _sum;
}

当然你可以使用 decltype(*begin) 代替,但是使用 value_type 看起来更整洁和优雅。 在 C+ 中+14 我想不出一个真正好的用途,因为您可以在函数返回时进行自动类型推导。

编辑 正如@Luc Danton 在评论中提到的那样,使用 decltype(*begin) 大多数时候都会产生引用,因此您需要 std::remove_reference,这让它看起来很讨厌。所以 value_type 派上用场了。

关于c++ - 什么时候使用迭代器的 `value_type`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33115615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com