已经实现了的功能
- 创建N 个val
- 插入新数据
- 根据索引获得数据
- 删除最后一个数据;
删除索引对应的数据// 这段程序出错了半天找不到错误
``
在这里插入代码片
#include <iostream>
using namespace std;
template<class T>
class Myvector {
public:
Myvector(int size, const T& val);//创建N 个val
void m_push_back(const T& val);//插入新数据
T getAt(int index);//根据索引获得数据
void m_pop_back();//删除最后一个数据;
//void m_delete(int index);//删除索引对应的数字
~Myvector();
private:
int m_size;
T* p=NULL;
};
template<class T>
Myvector<T>::Myvector(int size, const T& val) {
p = new T[size];
T *p1 = p;
for (int i = 0; i < size; i++) {
//p[i] = val;
*p1 = val;
p1++;
}
m_size = size;
}
template<class T>
T Myvector<T> ::getAt(int index) {
return p[index];
}
template<class T>
void Myvector<T>::m_pop_back()
{
m_size--;
}
//这里程序出现了问题
//template<class T>
//void Myvector<T>::m_delete(int index)
//{
// T* newP = new T[m_size-1];//创建新地址
//
// T* newP1 = newP;
// for (int i = 0; i < m_size; i++)//拷贝原始数据到新空间
// {
// if (i != index) {
// *newP1++ = *p++;
// }
// }
// delete[]p;//释放旧地址
// p = newP;//赋值新地址
// m_size--;
//}
template<class T>
void Myvector<T>::m_push_back(const T& val) {
int new_size=m_size+1;
T* newP = new T[new_size];//创建新地址
T* newP1 = newP;
for (int i = 0; i < m_size; i++)//拷贝原始数据和新数据到新空间
{
*newP1++ = *p++;
}
*newP1 = val;
delete[]p;//释放旧地址
p = newP;//赋值新地址
m_size = new_size;//赋值新数据
}
template<class T>
Myvector<T>::~Myvector()
{
if(p!=NULL){
delete[]p;
p = NULL;
}
}
int main()
{
Myvector<int> v(1, 41);
cout<<v.getAt(0)<<endl;
v.m_push_back(55);
cout << v.getAt(1) << endl;
return 0;
}