|
2
|
| Xavier Nodet · 技术社区 · 17 年前 |
|
|
1
8
试试这个:
在剩下的代码中使用Node::iterator。当/如果更改容器,则必须在单个位置更改typedef。(在本例中,可以进一步使用额外的typedef来存储vector。) 至于const问题,要么将vector的const_迭代器定义为迭代器,要么像vector那样定义双迭代器类型(const和non const版本)。 |
|
|
2
3
看看Adobe的
|
|
|
3
1
我想应该有一种方法,通过直接STL,类似于你正在尝试做的事情。 如果不是,你可能会考虑使用 boost's iterator facades and adaptors 您可以在其中定义自己的迭代器或将其他对象调整为迭代器。 |
|
|
4
1
隐藏迭代器基于
如果您查看编译器的C++标准库中的头文件,您可能会发现
正如Doug T.在他的回答中提到的,boost库中有一些类可以使编写迭代器变得更容易。特别地,
|
|
|
5
1
考虑使用 Visitor Pattern 以及反转关系:不需要向图结构请求数据容器,而是给图一个函子,让图将该函子应用于其数据。 visitor模式是图形上常用的模式,请参阅boost关于visitor概念的图形库文档。 |
|
|
6
0
如果您真的不希望该类的客户端知道它在下面使用了一个向量,但仍然希望它们能够以某种方式遍历它,那么您很可能需要创建一个类,将其所有方法转发给std::vector::iterator。 另一种方法是根据节点下面应该使用的容器类型对节点进行模板化。然后客户明确知道它使用的是什么类型的容器,因为他们告诉他们使用它。 就我个人而言,我认为将向量封装在用户之外通常是没有意义的,但是仍然提供了它的大部分(甚至一些)接口。它的封装层太薄,无法真正提供任何好处。 |
|
|
7
0
我查看了头文件向量。
是的typedef
那可能是你的ArcIterator吗?比如:
|
|
|
8
0
您可以将Node类模板化,并在其中同时定义iterator和const_iterator。 例如:
我没有试过这个代码,但它给了你一个想法。但是,您必须注意,使用ConstArcIterator只会禁止修改指向弧的指针,而不允许修改弧本身(例如通过非const方法)。 |
|
|
9
0
C++ 0x将允许你这样做 automatic type determination .
在新标准中
同样,您将能够返回任何合适的迭代器,并将其存储在
在新标准生效之前,您必须对类进行模板化,或者提供一个抽象接口来访问列表/向量的元素。例如,可以通过在成员变量中存储迭代器来实现,并提供成员函数,如
|
|
10
0
因为
基本上,指针的功能与随机访问迭代器非常相似,足以替代它们。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |