day7_C++

day7_C++

MyVector.h

#ifndef MYVECTOR_H
#define MYVECTOR_H
#include <iostream>

using namespace std;

typedef int size_type;

template<typename TYPE>
class MyVector
{
private:
    int num;
    TYPE *data;
    TYPE * headiterator;
    TYPE * enditerator;

public:
    //无参构造
    MyVector();

    //有参构造 数量(num) 和 值(val) - 构造一个初始放入num个值为val的元素的Vector
    MyVector(size_type num, const TYPE &val);

    //析构函数
    ~MyVector();

    // == 号重载 判断 是否相等
    bool operator==(const MyVector &R) const;

    //二倍扩容
    bool doubleAdd()
    {

    }

    TYPE* insert( TYPE loc, const TYPE &val );

    TYPE* end();

    TYPE at(int pos);

    void show();

};

#endif // MYVECTOR_H

myvector.c

#include "myvector.h"

template<typename TYPE>
MyVector<TYPE>::MyVector()
{}


template<typename TYPE>
MyVector<TYPE>::MyVector(size_type num, const TYPE &val):data(new TYPE[num]),num(num)
{

    for(int i = 0;i<num;i++)
    {
        this->data[i] = val;
    }
    headiterator = data;
    enditerator = data+num;

}

template<typename TYPE>
MyVector<TYPE>::~MyVector()
{
    delete []data;
    headiterator = nullptr;
    enditerator = nullptr;
}

template<typename TYPE>
bool MyVector<TYPE>::operator==(const MyVector &R) const
{
    if(this->num == R.num)
    {
        for(int i = 0;i<this->num;i++)
        {
            if(this->data[i] != R.data[i])
                return false;
        }
        return true;
    }
    else
        return false;
}

template<typename TYPE>
TYPE* MyVector<TYPE>::end()
{
    return enditerator;
}


template<typename TYPE>
TYPE* MyVector<TYPE>::insert( TYPE loc, const TYPE &val )
{
    int dataNum = 0;
    TYPE* headp = headiterator;
    TYPE* endp = enditerator;


    while(headp!=endp)
    {
        ++dataNum;
        headp++;
    }
    dataNum+=1;
    //未满不扩容
    if(dataNum<num)
    {
        for(int i = dataNum;i>loc;i--)
        {
            data[i] = data[i-1];
        }
        data[loc] = val;
        //尾迭代往后移动一个
        enditerator++;
    }

    headiterator = new TYPE[num*2];
      

}

template<typename TYPE>
TYPE MyVector<TYPE>::at(int pos)
{
    TYPE* p = headiterator;
    p+pos;
    return *p;
}


template<typename TYPE>
void MyVector<TYPE>::show()
{
    while(data!=enditerator)
    {
        cout<<*data<<endl;
        data++;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值