Я пытаюсь обработать std::list
типа указателя, например:
std::list<int*> pNums;
Первоначально итерация этого контейнера с на основе диапазона для l oop будет выглядеть this:
for(int* pNum : pNums)
{
std::cout << (*pNum) << std::endl;
}
Однако я хочу повторить этот контейнер с значением , а не с указателем , как показано ниже:
for(int num : Range(pNums))
{
std::cout << num << std::endl;
}
| Здесь Range
- это пользовательский класс упаковки std::list<int*>
, что-то должно быть определено следующим образом, я думаю:
class Range
{
Range(std::list<int*>& _list) : list(_list) {}
std::list<int*>& list;
// Basically inherit the original iterator
class custom_const_iterator : std::list<int*>::const_iterator
{
// Define an overloaded dereference operator
const int& operator*() const
{
...
}
...
};
public:
custom_const_iterator begin() { return ...; }
custom_const_iterator end() { return ...; }
};
Итак, мой вопрос, что я должен записать для класса Range
* * 1023