c++ / day06

1. 利用模板类完成顺序表(两天时间,今天至少写出大致框架)

代码

//implement template in sqlist
#include <iostream>
#include <cstring>

#define MAXSIZE 100

using namespace std;

template <typename T>
class Sqlist
{
    unsigned int len = 0;
    T *ptr_data=NULL;

public:
    Sqlist():ptr_data(new T [MAXSIZE])
    {
         cout << "Sqlist init" <<endl;
        init();
    }
    ~Sqlist()
    {
        cout << "Sqlist destructor" <<endl;
        delete[] ptr_data;
    }

    int push(T element); // append an element at the end
    T at(unsigned int index); //get element at index postion
    int init(); //initilize sqlist

};

template <typename T>
int Sqlist<T>::init()
{
    if (NULL == ptr_data) //why ther is a warning?
    {
        cout << "ptr_data is NULL" <<endl;
        return  -1;
    }
    memset(ptr_data, 0, sizeof(T[MAXSIZE]));

    return 0;
}

template <typename T>
int Sqlist<T>::push(T element)
{
    //is full
    if(len == MAXSIZE)
    {
        cout << "sqlist is full" <<endl;
        return -1;
    }
    *(ptr_data + len) = element;
    len++;
    return 0;
}

template <typename T>
T Sqlist<T>::at(unsigned index)
{
    if(index < 0 || len > MAXSIZE)
    {
        cout << "index is out of range" <<endl;
        return NULL; //why ther is a warning?
    }

    return *(ptr_data + index);
}




int main()
{
    Sqlist<int> list;

    for(int i=0; i<10; i++)
    {
        list.push(i*i);
    }

    for(unsigned int i=0; i<10; i++)
    {
        cout << "list.at(" << i << ")" <<list.at(i) <<endl;
    }


    cout << "--The end--" << endl;
    return 0;
}

运行结果

2. 整理思维导图

相关推荐

  1. MSc CDA Take-Home

    2024-01-04 12:42:03       60 阅读
  2. CDA一级备考策略分享

    2024-01-04 12:42:03       32 阅读
  3. CDA-LevelⅡ【考题整理-带答案】

    2024-01-04 12:42:03       50 阅读
  4. Spring Data访问Elasticsearch----CDI集成

    2024-01-04 12:42:03       36 阅读
  5. CDA Level Ⅰ 2023认证考试大纲

    2024-01-04 12:42:03       78 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-04 12:42:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-04 12:42:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-04 12:42:03       82 阅读
  4. Python语言-面向对象

    2024-01-04 12:42:03       91 阅读

热门阅读

  1. Android 车联网——CarPowerManagementService介绍(七)

    2024-01-04 12:42:03       64 阅读
  2. nodejs和vuejs的区别

    2024-01-04 12:42:03       49 阅读
  3. K8S Dashboard登录Token过期问题处理

    2024-01-04 12:42:03       59 阅读
  4. 数据可视化与地理空间

    2024-01-04 12:42:03       60 阅读
  5. 57个Linux常用命令含参数介绍和使用示例

    2024-01-04 12:42:03       53 阅读
  6. 开源大数据集群部署(一)集群实施规划

    2024-01-04 12:42:03       65 阅读
  7. 开源协助平台工程灵活应对多云时代的挑战

    2024-01-04 12:42:03       56 阅读