【C++】简易的仿Vector类

By e2hang at 2025-05-21 • 0人收藏 • 42人看过
#ifndef VECTOR_H
#define VECTOR_H
#include <iostream>

template<class T>
class Vector {
private:
    T** p;
    int hang;
    int lie;
public:
    Vector();
    Vector(int m, int n);
    Vector& operator=(const Vector& x);
    T* operator[](int x);
    void AlterElement(int m, int n, T x);
    ~Vector();
};

template<class T>
Vector<T>::Vector() {
    p = nullptr;
    hang = 0;
    lie = 0;
}

template<class T>
Vector<T>::Vector(int m, int n) {
    hang = m;
    lie = n;
    p = new T * [m];
    for (int i = 0;i < m;i++) {
        p[i] = new T[n];
    }
}

template<class T>
Vector<T>::~Vector() {
    if (p) {
        for (int i = 0; i < hang; i++) {
            delete[] p[i];
        }
        delete[] p;
    }
}

template<class T>
Vector<T>& Vector<T>::operator=(const Vector& x) {
    if (p) {
        for (int i = 0; i < hang; i++) {
            delete[] p[i];
        }
        delete[] p;
    }
    hang = x.hang;
    lie = x.lie;
    p = new T * [hang];
    for (int i = 0; i < hang; i++) {
        p[i] = new T[lie];
        for (int j = 0; j < lie; j++) {
            p[i][j] = x.p[i][j];
        }
    }
    return *this;
}

template<class T>
T* Vector<T>::operator[](int x)
{
    return p[x];
}

template<class T>
inline void Vector<T>::AlterElement(int m, int n, T x)
{
    p[m][n] = x;
}



#endif // !VECTOR_H

实现:(对于二维数组)

1、赋值运算

2、深拷贝

3、泛型编程、使用模板、兼容不同类型的数据

4、重载[]以访问数组每个元素

登录后方可回帖

登 录
信息栏
欢迎来到滑稽社论坛!注册会员即可发帖!

你好啊

Loading...