Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::set没有前后成员函数有什么设计原因吗? 我知道我可以使用*s.begin(),但同样的参数也可以用于向量,它有前面/后面 我经常使用set/map的ordered属性来获取“最小”元素/键-ofc,I这样做并不是拥有它的原因,只是一个例子:)_C++_Set - Fatal编程技术网

C++ std::set没有前后成员函数有什么设计原因吗? 我知道我可以使用*s.begin(),但同样的参数也可以用于向量,它有前面/后面 我经常使用set/map的ordered属性来获取“最小”元素/键-ofc,I这样做并不是拥有它的原因,只是一个例子:)

C++ std::set没有前后成员函数有什么设计原因吗? 我知道我可以使用*s.begin(),但同样的参数也可以用于向量,它有前面/后面 我经常使用set/map的ordered属性来获取“最小”元素/键-ofc,I这样做并不是拥有它的原因,只是一个例子:),c++,set,C++,Set,在这里,我谈论的是为什么正面/背面会是糟糕的设计,所以请跳过明显的原因,比如委员会忘记了它 我认为单词“front”和“back”是为序列容器保留的(即,元素顺序由插入顺序决定的容器),这些单词的意思是表示该序列中的物理位置 由于set不是序列容器(而是关联容器),因此这不合适。特别要注意的是,“front”的意思可能会因为后来插入了一个不相关的元素而改变。第二段没有真正意义;向量的后退也可以通过后退进行更改。但是第一段加1。@larsmans:是的,如果你换了背,“背”可以改变。但你将明确地改

在这里,我谈论的是为什么
正面
/
背面
会是糟糕的设计,所以请跳过明显的原因,比如委员会忘记了它

我认为单词“front”和“back”是为序列容器保留的(即,元素顺序由插入顺序决定的容器),这些单词的意思是表示该序列中的物理位置


由于
set
不是序列容器(而是关联容器),因此这不合适。特别要注意的是,“front”的意思可能会因为后来插入了一个不相关的元素而改变。

第二段没有真正意义;
向量的
后退
也可以通过
后退
进行更改。但是第一段加1。@larsmans:是的,如果你换了背,“背”可以改变。但你将明确地改变背面。如果你明白我的意思,在一组中,这将是一个不相关的变化。当你考虑列表时,这个解释是最好的。(如果你想,<代码> STD::清单< /Cord>是星形例子,而<>代码:STD::vector 有一个例外:插入使“返回”无效,而<代码> STD::DeQue/Coo>例外,插入中的“前”和“后”都无效。当然,引用不必因无关的更新而无效(如果我正确地回忆起B树由于无效问题而不能用于
std::set
),它们只是不再指向前面或后面。@larsmans:的确,在标准库中,在任意插入和删除期间,所有基于节点的容器都保持完全的迭代器和引用有效性。