将迭代器返回可用于此内部成员函数的私有变量

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

我希望能够做出类似的方法

void Vector<T>::foo()
{
  std::transform(this->begin(),this->end(),this->begin(), lambda)
}

但是如果我将begin / end函数设为const,则它们将返回const_iterator,否则在成员函数内部不能将其与此一起使用。有办法吗?

 template <class T>
    class Vector 
        {
        public:
            Vector(std::vector<T> coords) : _coords(coords) {}
            class std::vector<T>::iterator begin() const { return _coords.begin(); }
            class std::vector<T>::iterator end() const { return _coords.end(); }
        private:
            std::vector<T> _coords;
        };

我希望能够在函数内使用this-> begin()

c++ class iterator this const
1个回答
0
投票

是,您提供了const限定的过载

template <class T>
class Vector 
    {
    public:
        using iterator = typename std::vector<T>::iterator;
        using const_iterator = typename std::vector<T>::const_iterator;

        Vector(std::vector<T> coords) : _coords(coords) {}

        iterator begin() { return _coords.begin(); }
        iterator end() { return _coords.end(); }

        const_iterator begin() const { return _coords.begin(); }
        const_iterator end() const { return _coords.end(); }
    private:
        std::vector<T> _coords;
    };
© www.soinside.com 2019 - 2024. All rights reserved.