1
22
我完全同意你的看法。 我认为答案很简单: 使用常量迭代器,其中常量值是正确使用的,反之亦然。 在我看来,那些反对常量迭代器的人通常必须反对常量… |
2
9
这里有一个稍微不同的方法来看待它。
所以…你想用
不太有道理。隐含的说法是
另一方面,STL中的大多数算法都基于一对迭代器指定的范围。集合本身从未传递,因此
希望能让事情变得像泥一样清楚;) |
3
3
我不认为需要特别关注迈耶的这一特殊声明。当需要非修改操作时,最好使用
|
4
3
我通常更喜欢常量,但最近遇到了一个难题,常量迭代器混淆了我的“总是使用常量是可能的”哲学:
由于传入const-list引用要求只使用const迭代器,所以现在如果使用find,就不能对结果执行任何操作,而是查看它,即使我只想执行express,find也不会更改正在传入的列表。 那么,我想知道,斯科特·梅耶斯的建议是否与这样的问题有关,在这种情况下,逃避警察是不可能的。据我所知,你 不能 (可靠地)由于一些内部细节,使用简单的强制转换的un const const_迭代器。这也是(也许是结合在一起)的问题。 |
5
2
根据我对这个链接的理解,迈耶斯似乎从根本上说,交互程序比常量交互程序更好,因为您不能通过常量迭代器进行更改。 但如果他是这么说的话,那么迈尔斯实际上是错的。这正是为什么当您想要表达时,const_迭代器优于迭代器的原因。 |
6
2
C++ 98我认为需要考虑迈尔斯语句是指C++ 98。今天很难说,但如果我记得对的话
例如
可能需要
得到一个常量迭代器,它会大大膨胀一个简单的。 即使你有了结果
没有办法使用std::vector::const_迭代器插入到vector或任何其他成员函数中,这些函数需要位置的迭代器。无法从常量迭代器中获取迭代器。不存在铸造方法(是否存在?)为此。 因为const迭代器并不意味着容器不能被更改,而只意味着指向的元素不能被更改(const迭代器相当于指向const的指针) 在这种情况下,这真是一堆废话。 今天情况正好相反。const迭代器很容易使用cbegin等,即使对于非const容器和all(?)采用位置的成员函数具有常量迭代器作为参数,因此不需要进行任何转换。
原来是什么
今天真的应该是
因为第一个只是历史执行缺陷的产物。 |
Julia · 矢量中相加为总和S的值的数量 1 年前 |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 2 年前 |
quantumwell · 将空向量放入std::map() 6 年前 |
OutOfBound · 对未初始化内存使用算法的优点 6 年前 |
DarthRubik · 在使用列表删除之后,迭代器如何不无效 6 年前 |