|
1
8
|
|
2
5
没有办法做到这一点。原因很简单:向迭代器添加一种方法来获取它们所指向的容器是非常困难的
你说你需要它来检查射程。您可以提供一个结束迭代器,该迭代器指向范围的最后一个有效迭代器位置之后的一个。检查您当前的位置是否不在末尾。这就是范围检查所需要做的全部工作。 |
|
|
3
3
如何从指针中检索原始字符串(如果它没有指向字符串的开头)? implement 您自己的迭代器包装器,用于存储对容器的引用。 |
|
|
4
2
理论上,如果所讨论的迭代器至少是一个前向迭代器,那么有一种方法。您可以检查您的迭代器是否是每个候选容器的[first,last]中的迭代器之一。因为您使用的是向量容器,所以您有一个随机访问迭代器,您可以使用小于运算符快速执行此检查。 你必须知道所有的候选向量,在前面检查, 这不是获取迭代器所属容器的一般方法。 但是,您可以通过使用包含指向创建向量的指针的内容来装饰随机访问迭代器,从而定义随机访问迭代器的扩展。这可能有点不雅观、低效和不方便。所以,首先看看是否可以重写代码以避免这种需要。 |
|
5
1
STL不允许这样做。 例如,向量迭代器可以简单地实现为指针。并且没有通用的方法从指向对象分配的某些数据的指针检索对象。 |
|
|
6
0
迭代器旨在对集合进行迭代,因此,迭代器提供了执行该操作所需的接口,并且仅提供了该接口。这是很好的面向对象编程原则。 我可以问一下您的用例是什么,您需要知道迭代器容器的“范围”吗? |
|
|
7
0
如前所述,最好重写代码,这样就不需要这种行为。这和拿着一枚硬币是一样的,但是你不知道它来自哪里,除非你在纸上记下它。 如果无法重写代码,仍然可以引入一个包装对象,该对象包含指向容器和迭代器本身的指针。你需要这个做什么? |
|
|
Julia · 矢量中相加为总和S的值的数量 3 年前 |
|
|
C_Rod · 在模板方法中确定STL容器中项目的数据类型 4 年前 |
|
|
quantumwell · 将空向量放入std::map() 8 年前 |
|
|
OutOfBound · 对未初始化内存使用算法的优点 8 年前 |
|
|
DarthRubik · 在使用列表删除之后,迭代器如何不无效 8 年前 |