我正在考虑在C ++中创建一个Linq库来执行theVector.select( ... )theVector.where(...)之类的操作。
我想知道是否有一种方法可以扩展已经声明的C ++类(例如std::vector),我想这样做:

theVector.select(...)


代替

myClass( theVector ).select(...)


无论如何,有什么方法可以完成like in C#

谢谢,

最佳答案

对于这种类型的“与当前类没有直接关系的实用程序”,C ++社区似乎正朝着非成员函数的方向发展。例如如果您有std::vector v;,则可以始终为v.begin(),但现在也可以为std::begin(v)。这意味着像select(theVector)...这样的东西。

但是,您可能希望在某个时候支持联接,所以我会考虑

select(...).from(theVector).join(theMap, ...).where(...)
// or
select(...).from(theVector).order_by(...)
// etc.

09-10 04:14