理解 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++的泛型编程,使用模板就能解决我们遇到的问题。仔细一想使用模板之后的堆栈不就是一个容器吗?它能够容纳其他类型的结构或者类,所以容器,顾名思义,是指容纳其他物品的器具。
下面是一些常用的容器类



浙公网安备 33010602011771号