我正在C++中进行计算,它必须尽可能快(它可能每秒执行60次,并且可能有大量数据)。在计算过程中,必须处理一定数量的项目。但是,在不同的情况下,物品存储的不同实现是最佳的,所以我需要为此使用抽象类。处理未知容器中所有物品的最有效方法?
我的问题是,对C++中的每个项目执行操作的最常见和最有效的方法是什么? (我不需要期间改变容器的结构)。我已经想到了两个可能的解决方案:
让迭代器的存储类。 (他们也是我的,所以我可以添加它。)这是在Java中常见的,但似乎并没有很“C”对我说:
class Iterator { public: bool more() const; Item * next(); }
添加某种抽象的处理程序,这将是重写在计算部分,将包括代码被称为在每个项目上:(只有一个函数指针是不够的,因为它也带来了一些其他数据)
class Handler { public: virtual void process(Item &item) = 0; }
完全不同的东西?
第二个选择似乎因为实际上可以在不中断一个循环处理项目好一点给我,但它使代码相当混乱,因为我将不得不作出相当多的派生类的。你会建议什么?
谢谢。
编辑:更准确地说,存储数据类型并不仅仅是一个ADT,它的基本方法是只根据一些参数找到其中某些特定的元素子集,然后我需要过程,所以我不能在数组或其他东西中准备好它们。
迭代器不是非常C,但它们*非常* C++。 – 2012-02-06 23:07:33