如何在C++中实现切片运算符[]?



这可能是一个重复的问题,但我似乎找不到答案......我正在尝试使用operator[]在 C++ 中实现一个可滑动的容器,例如对象。这是我的实现(不起作用(:

class SlicableIntVector{
private:
std::vector<int> vector;
public:
explicit SlicableIntVector(std::vector<int> vector): vector(vector){};
// The usual way of overloading operator[]
int &operator[](int index){
return vector[index];
}
// This version doesn't work as the argument is not binary
int &operator[](int start, int end){
return vector[vector.begin()+start, vector.begin()+start+end];
}
}
};

除了使用另一种方法来实现切片操作之外,我还有哪些选项可以让切片与operator[]一起工作?如果我能像蟒蛇一样灵活地切片list我会很高兴。

n4835

§12.6.2二元运算符

1

二元运算符应由具有一个参数的非静态成员函数 (11.4.1( 实现 或通过具有两个参数的非成员函数

所以你不能传入两个参数。

因此,请尝试以下操作:

int &operator[](std::tuple<int, int> start_end);

最新更新