想封装一下vector类型
本帖最后由 xiaoyuanyuan2009 于 2013-01-20 18:59:03 编辑 因为vector访问成员的时候,有时候要迭代器类型有时候要int类型,很不方便,所以想封装一下。感觉下面的方法好像做不到,有什么好方法吗
template<typename T>
class MyVector
{
public:
MyVector();
private:
vector<T> v;
};
template<typename T>
MyVector<T>::MyVector()
{
//怎么给v成员的类型传递进去,要传的类型就是 MyVector 收到的类型
}
#include <vector>
#include <iostream>
template <typename T>
struct MyVector : protected std::vector<T>
{
//just list those members we would like to public here
typedef std::vector<T> base_type;
using base_type::push_back;
using base_type::operator[];
void erase(size_t i)
{
if(i < base_type::size())
{
base_type::erase(base_type::begin()+i);
}
}
};
int main()
{
MyVector<double> v;
v.push_back(1.0);
std::cout << v[0] << std::endl; //1.0
v.push_back(2.0);
v.erase(0);
std::cout << v[0] << std::endl; //2.0
return 0;
}