本人通过重载vector实现了C++模仿Pascal数组。
这里先贴出源代码:
template <typename elemType, int left, int right>
struct PArray : public vector<elemType>
{
PArray() : vector<elemType>(right-left+1) { }
elemType &operator[] (int sub)
{
return vector<elemType>::operator[](sub-left);
}
};
这里只是重载了vector的下标,其实at()函数也可以使用类似的方法。另外构造函数也只是简单的写了一个。
实际编程的时候可以不必写成模板的样子,只是重载成所需的成员类型即可。
这里先贴出源代码:
template <typename elemType, int left, int right>
struct PArray : public vector<elemType>
{
PArray() : vector<elemType>(right-left+1) { }
elemType &operator[] (int sub)
{
return vector<elemType>::operator[](sub-left);
}
};
这里只是重载了vector的下标,其实at()函数也可以使用类似的方法。另外构造函数也只是简单的写了一个。
实际编程的时候可以不必写成模板的样子,只是重载成所需的成员类型即可。