理解 c++ 容器类

这个帖子是以前记录的,当时不理解。前段时间在学习数据结构,在练习课本上的代码时,我发现一个问题:很多不同的算法需要用到队列和堆栈,然而在不同的算法中队列和堆栈的数据域不同,所以要针对不同的数据域创建不同队列和堆栈结构。

例如:当堆栈的数据域data的类型不同时(此处为LNode*),就要写一堆重复代码。

typedef struct StackNode_LL {
    LNode* data;
    struct StackNode_LL *next;
}StackNode_LL, *LinkStack_LL;

Status InitStack(LinkStack_LL &S)
{
    S = nullptr;
    return OK;
}

Status Push(LinkStack_LL &S, LNode* e)
{
    StackNode_LL *p = new StackNode_LL;
    p->data = e;
    p->next = S;
    S = p;
    return OK;
}

Status Pop(LinkStack_LL &S, LNode* &e)
{
    if (S == nullptr) return ERROR;
    e = S->data;
    StackNode_LL *p = S;
    S = S->next;
    delete p;
    return OK;
}

于是我们想到了c++的泛型编程,使用模板就能解决我们遇到的问题。仔细一想使用模板之后的堆栈不就是一个容器吗?它能够容纳其他类型的结构或者类,所以容器,顾名思义,是指容纳其他物品的器具。

下面是一些常用的容器类

posted @ 2021-01-11 16:10  行路难,多歧路  阅读(118)  评论(0)    收藏  举报