有没有设计理由为什么std :: set没有前后成员函数?

NoS*_*tAl 13 c++ set

  1. 我知道我可以使用*s.begin(),但可以使用相同的参数vector,其中有front/back
  2. 我常常使用set/map的ordered属性来获取"最小的"元素/键 - 事实上,这样做并不是拥有它的理由,只是一个例子:)

在这里,我说的是设计原因为什么front/ back将是糟糕的设计,所以请跳过委员会忘记它的明显原因......

Ker*_* SB 23

我认为单词"front"和"back"是为序列容器保留的(即元素顺序由插入顺序决定的那些),并且这些单词意味着表示该序列中的物理位置.

由于set不是序列容器(而是关联容器),这是不合适的.特别要注意,"front"的含义可以通过以后插入不相关的元素来改变.

  • @larsmans:是的,如果改变背部,"后退"会改变.但你会明确改变背面.如果你明白我的意思,在一个集合中,它将是一个*无关的*变化.当您考虑列表时,此解释最有效. (5认同)
  • 第二段没有意义; `vector`的`back`也可以通过`push_back`改变.但第一段+1. (4认同)