Я хочу, чтобы иметь возможность индексировать std :: vector, так что, когда я получаю доступ к данным через оператор [], индексный индекс равен нулю, а конец вектор верхний.Inherit from std :: vector и оператор перегрузки [] для пользовательской индексации
Это то, что я пытаюсь сделать. Не уверен, как это сделать на C++.
using namespace std;
class Provider
{
public: string name;
};
template <class T>
class Vec : public std::vector<T>
{
private Vec(){}
public Vec(int upperbound, int lowerbound)
{
ub = upperbound;
lb = lowerbound;
}
public:
T& operator[] (int);
private:
int ub;
int lb;
};
//How to do this?
T& VecDQ::operator[] (int idx)
{
return (ub - lb) + idx;
}
int main()
{
int upperBound = 175642;
int lowerBound = 175000;
// I want a Vec of deques<Provider> index such that idx [0] is starting at lowerbound
Vec<std::deque<Provider>> vecOfDeq(upperBound, lowerBound);
//Here, fill the Vec<std::deque<Provider>> with some random examples
// Here, print out Vec[175000].at(1).name << std::endl; // Vec[175000] is really Vec[0]
return 0;
}
'общественного общественного станд :: вектор' общественности ... общественность? –
Borgleader
исправлено это была опечатка – Ivan
Я не совсем понимаю, что вы пытаетесь сделать. У std :: vector уже есть реализация [] из STL, которая возвращает элемент в этом индексе, если он существует. Я не могу понять, какую функциональность вы пытаетесь достичь при перегрузке вашего оператора. – jzila