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

问题描述 投票:1回答:1

这可能是一个重复的问题,但我似乎找不到答案...我正在尝试使用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[]进行切片?如果我能像python list那样灵活地切片,我会很高兴的。

c++ slice
1个回答
0
投票

来自n4835

12.6.2二进制运算符[over.binary]1二元运算符应由具有一个参数的非静态成员函数(11.4.1)实现或通过具有两个参数的非成员函数

© www.soinside.com 2019 - 2024. All rights reserved.