这可能是一个重复的问题,但我似乎找不到答案......我正在尝试使用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);