【IT相关】STL容器之set

先说明一个概念,适配器(adapter),适配器是标准库中的通用概念,包括容器适配器、迭代器适配器、函数适配器。本质上,适配器是使一事物的行为类似于另一事物的行为的一种机制。

容器适配器让一种已存在的容器类型以一种不同的抽象类型的工作方式实现。

STL提供了三种顺序容器适配器,queue、priority_queue、stack。

每一种适配器都定义了两个构造函数,如下:

A a;//创建空适配器a

A a(c);//用一个容器c初始化适配器a

默认的stack和queue都基于deque实现,priority_queue基于vecTor实现。

创建适配器时通过将一个顺序容器指定为适配器的第二个类型实参,可覆盖其关联的基础容器类型,例如:

stack< string, vecTor > str_stk;

stack可以建立在vecTor,list或者deque上。

queue要求基础容器提供push_front操作,所以不能建立在vecTor上。

priority_queue要求提供随机访问,所以不能建立在list之上。

书归正传,先说说stack提供的操作,如下:

empty() 堆栈为空则返回真

pop() 移除栈顶元素,只有pop删除元素

push() 在栈顶增加元素

size() 返回栈中元素数目

top() 返回栈顶元素

下面给出stack的操作使用范例:

[cpp] view plaincopyprint?#include

#include

#include

using namespace std;

int main()

{

// 下面程序摘自《c++ primer》中文第四版301页,本例短小精辟,用到了所有操作,所以就不自己写了

// number of elements we'll put in our stack

const stack::size_type stk_size = 10;

stack intStack;

// fill up the stack

int ix = 0;

while(intStack.size() != stk_size)

// use postfix increment;want to push old value onto intStack

intStack.push(ix++);// intStack holds 0…9 inclusive

int err_cnt = 0;

// look at the top element of the stack

while(intStack.empty == false){

int value = intStack.top();

// read the top element of stack

if(value != –ix){

cerr << "oops! expected " << ix << " received " << value << endl;

++err_cnt;

}

intStack.pop();// pop the top element, and repeat

}

cout << "Our program ran with " << err_cnt << " errors" << endl;

return 0;

}

更多IT资料请访问:Tore_m_628846_6316_5_1.html”>http://www.shangxueba.com/sTore_m_628846_6316_5_1.html

一个有信念者所开发出的力量,大于99个只有兴趣者。

【IT相关】STL容器之set

相关文章:

你感兴趣的文章:

标签云: