• C++ 使用c++类模板实现动态数组-可实现自定义数据类型存储


    .hpp文件

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. template <class T>
    6. class arraylist
    7. {
    8. private:
    9. T* data ;//数组地址
    10. int size;//长度
    11. int count;//容量
    12. public:
    13. arraylist();
    14. ~arraylist();
    15. void add(T t);
    16. T& get(int index);
    17. int getsize();
    18. };
    19. template <class T>
    20. arraylist :: arraylist()
    21. {
    22. this->count = 2;
    23. this->size = 0;
    24. this->data = new T[count];
    25. }
    26. template <class T>
    27. arraylist::~arraylist()
    28. {
    29. if(data != NULL)
    30. {
    31. delete [] data;
    32. data = NULL;
    33. }
    34. }
    35. template <class T>
    36. void arraylist::add(T t)
    37. {
    38. if(size == count)
    39. {
    40. count = count * 2;
    41. T* newdata = new T[count];
    42. memcpy(newdata,data,size*sizeof(T));
    43. delete [] data;
    44. data = newdata;
    45. }
    46. data[size] = t;
    47. size++;
    48. }
    49. template <class T>
    50. T& arraylist::get(int index)
    51. {
    52. return data[index];
    53. }
    54. template <class T>
    55. arraylist::getsize()
    56. {
    57. return size;
    58. }

    .main文件

    1. #include
    2. #include
    3. #include
    4. #include "arraylist.hpp"
    5. using namespace std;
    6. class person
    7. {
    8. private:
    9. char name[50];
    10. int age;
    11. public:
    12. person(){}
    13. person(char *name,int age)
    14. {
    15. strcpy(this->name,name);
    16. this->age = age;
    17. }
    18. char *getname()
    19. {
    20. return name;
    21. }
    22. void setname(char *name)
    23. {
    24. strcpy(this->name,name);
    25. }
    26. void showinformation()
    27. {
    28. cout << "姓名" << name << "\n年龄" << age <
    29. }
    30. };
    31. void fun01()
    32. {
    33. person p1("张三",18);
    34. person p2("张四",18);
    35. person p3("张寺",18);
    36. person p4("张死",18);
    37. person p5("张斯",18);
    38. arraylistps;
    39. ps.add(p1);
    40. ps.add(p2);
    41. ps.add(p3);
    42. ps.add(p4);
    43. ps.add(p5);
    44. int len = ps.getsize();
    45. cout << "len=" << len << endl;
    46. for(int i = 0 ;i < len;i++)
    47. {
    48. ps.get(i).showinformation();
    49. }
    50. }
    51. int main(int argc, char *argv[])
    52. {
    53. fun01();
    54. return 0;
    55. }

    运行结果:

  • 相关阅读:
    hangfire安装
    55.【Java 线程】
    编译 Android历程
    PHPExcel 字母列不够用,针对 AA、AB、AC ... ZZ 这样的列
    【Vue3.0移动端项目--旅游网】-- 首页分类和热门精选展示
    8.tomcat优化
    无人自动驾驶技术研发中具有重要性
    认识Redis以及Redis的安装
    SQLServer过滤数据(二)
    uni app 树状结构数据展示
  • 原文地址:https://blog.csdn.net/aisheisadas/article/details/134539528