C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
C++ : Return an range based for loop iterator with inheritate objects
我有一个类Vertex
,我想以特定的方式迭代它的邻居,例如:
Vertex my_v;
for(const Vertex& v : my_v.get_neighbors_closer_than(10.0)
/* Some code on v*/
// And like this
for(const Vertex& v : my_v.get_neighbors_by_trigonometric_order()
/* Some code on v*/
为此,我创建了自定义容器和迭代器,它们以我想要的方式进行迭代。然后,我需要创建一个继承类DlnVertex : public Vertex
该类大多数时候对迭代函数具有相同的行为。因此,我想在我的DlnVertex
课上写:
DlnVertex my_dv;
for(const DlnVertex& dv : my_dv.get_neighbors_closer_than(10.0))
/* Some code on dv*/
for(const DlnVertex& dv : get_neighbors_by_trigonometric_order())
/* Some code on dv*/
我的自定义迭代器返回一个Vertex&
,我需要在我的类DlnVertex
中使用DlnVertex
属性,并且我不知道如何避免为我的继承类重写迭代器,因为它将具有相同的行为。是否有任何建议、模式或代码示例可以帮助我?
我找到了一种方法:为函数的返回类型模板我的基类:
template<typename VertexType>
class Vertex
{
/* ... */
MyContainer<VertexType> get_neighbors_closer_than(double rad);
}
然后通过将自身设置为模板类型来设计我的派生类:
class DlnVertex : public Vertex<DlnVertex>{/* ... */}
相关文章:
- 对于set上的循环-获取next元素迭代器
- 将多个 for 循环组合成单个迭代器
- 使用一个 for 循环如何迭代和测试迭代器值?
- 转到基于范围的 for 循环中的下一个迭代器
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 在分配和发布递增循环迭代器时C++无限循环(gcc 错误?
- 具有迭代器和自定义步长的循环结束条件
- 映射中循环的迭代器
- 在向量中使用迭代器循环
- C++ 迭代器循环与索引循环
- 使用相同的迭代器循环遍历两个 std::vector
- 我可以用cout而不是迭代器循环打印STL映射吗?
- 迭代器与非迭代器循环,不同的输出,C++
- 将迭代器循环调用end()多次
- 用于 STL 可迭代对象的迭代器循环的宏
- c++中通过迭代器循环遍历数组
- 嵌套迭代器循环,为什么迭代器是相等的?——c++
- 在多线程程序中使用迭代器循环hash_map
- 迭代器循环不计算最后一项
- 如何访问C++列表迭代器循环中的"previous"元素?