我希望能够做出类似的方法
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()
是,您提供了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;
};