爲什麼不能使用此代碼?如何在範圍內使用begin()和end()for循環
我得到的錯誤是
T *Vector<T>::begin(Vector<T> &)' : expects 1 arguments - 0 provided
代碼:
#include <iostream>
using namespace std;
template<typename T> class Vector
{
public:
T* elem;
int sz;
Vector()
{
elem = new T[2];
sz = 2;
}
template<typename T> T* begin(Vector<T>& x)
{
return &x[0];
}
template<typename T> T* end(Vector<T>& x)
{
return x.begin()+x.size();
}
unsigned int size()
{
return sz;
}
};
int main()
{
Vector<int> ea;
for(auto& s: ea)
// do something
return 0;
}
也是我不知道向量參數的開始()和end(),爲什麼他們需要它?他們已經是成員函數,所以他們應該有「this」作爲參數。我寫了這個代碼,但功能是從一本書採取(他們是朋友?)
'模板 T *()開始',也許? –
2013-07-06 13:09:08
這本書在你手中,你爲什麼問我們?他們看起來像是免費的功能。 – Jon
(或者更好,'T&begin()'?如果這是允許的話......) – 2013-07-06 13:09:29