C++ Day7

仿照vector手动实现自己的myVector,最主要实现二倍扩容功能

#include 
#include

using namespace std;

template
class myVector
{
private:
    T* iterator;    //迭代器
    D len;    //元素总数量
    D size;   //最大容量
public:
    //无参构造
    myVector(){};

    // 显性定义有参构造函数
    myVector(D len,T val);

    //析构函数
    ~myVector();

    //拷贝构造函数
    myVector(const myVector &other);

    //拷贝赋值函数
    myVector &operator=(const myVector &other);

    //判空
    bool myVector_empty();

    //判满
    bool myVector_full();

    //任意位置插入
    void myVector_insert(D pos);

    //任意位置删除
    void myVector_pop(D pos);

    //清空容器
    void myVector_outall();

    //求容器的大小
    D myVector_size();

    //输出容器内所有元素
    void myVector_show();
};

// 显性定义有参构造函数
template
myVector::myVector(D len,T val)
{
    this->len=len;
    size=len;
    iterator=new T[size+1];
    for(int i=0;i
myVector::~myVector()
{
    delete iterator;
    cout<<"myVector::析构函数"<
myVector::myVector(const myVector &other)
{
    size=other.size;
    len=other.len;
    iterator=new T(size);
    for(int i=0;i
myVector& myVector::myVector &operator=(const myVector &other)
{

}*/

//判空
template
bool myVector::myVector_empty()
{
    if(0==len)
    {
        return true;
    }
    return false;
}

//判满
template
bool myVector::myVector_full()
{
    if(len==size)
    {
        return true;
    }
    return false;
}

//任意位置插入
template
void myVector::myVector_insert(D pos)
{
    if(myVector_full())
    {
        T* buf=new T (size);
        for(int i=0;i>i;
    //后移
    for(int j=len;j>=pos;j--)
    {
        iterator[j]=iterator[j-1];
    }

    for(int j=0;j
void myVector::myVector_pop(D pos)
{
    if(myVector_empty())
    {
        cout<<"已经是空容器了,没有元素可以删除了"<
void myVector::myVector_outall()
{
    if(myVector_empty())
    {
        cout<<"已经是空容器了,不需要清空"<
D myVector::myVector_size()
{
    return size;
}

//输出容器内所有元素
template
void myVector::myVector_show()
{
    for(int i=0;i s(2,3.3);
    s.myVector_show();
    //s.myVector_insert(1);



    return 0;
}


你可能感兴趣的:(c++,算法,开发语言)