gpt4 book ai didi

c++ - 为什么 std::map (以及 STL 中的其他关联容器)上没有 front() 方法?

转载 作者:IT老高 更新时间:2023-10-28 23:01:43 25 4
gpt4 key购买 nike

STL reference似乎在概念上有所不同:

  • 一方面是“序列容器”(数组 vector 双端队列 forward_list 列表)
  • 另一方面,“关联容器”(set multiset map multimap unordered_set unordered_multiset unordered_map unordered_multimap)。

另外,我们好像有:

  • 所有实现 begin() 方法的容器都返回一个指向容器中第一个元素的迭代器。
  • 只有具有 front() 方法的序列容器返回对容器中第一个元素的引用。

我的理解是 front() 方法可以很容易地定义为 begin() 方法,只需取消引用它的返回值。

因此,我的问题是:为什么没有为定义 begin() 方法的所有对象定义 front() 方法? (实际上应该是每个容器)

(我想从语义的角度来看,从 map 中获取第一个元素并没有从 vector 中获取第一个元素那么有意义,但我想知道是否有更有效的解释)。

最佳答案

您确实必须向标准委员会询问该问题 (comp.lang.c++.std),但我的猜测是,是的,它只是没有多大意义。此外,它的含义还不是很清楚。你要root,先预购,先后购,先插入……?序列很清楚:前面是一侧,后面是另一侧。 map 就是树。

关于c++ - 为什么 std::map (以及 STL 中的其他关联容器)上没有 front() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16981600/

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