包 | system.collections |
---|---|
继承 | class CQueue » CComponent |
实现 | IteratorAggregate, Traversable, Countable |
源自 | 1.0 |
版本 | $Id: CQueue.php 3427 2011-10-25 00:03:52Z alexander.makarow $ |
源码 |
CQueue实现了一个队列。
这个实现的典型的队列操作,包括 enqueue(),dequeue()和peek()。另外, contains()可以用来检查一个项目是否包含在 队列。通过Count属性,可以取得 列表中的项目数。
队列中的项目可以像下面那样使用foreach遍历,
这个实现的典型的队列操作,包括 enqueue(),dequeue()和peek()。另外, contains()可以用来检查一个项目是否包含在 队列。通过Count属性,可以取得 列表中的项目数。
队列中的项目可以像下面那样使用foreach遍历,
foreach($queue as $item) ...
公共方法
属性详细
count
属性
只读
public integer getCount()
返回队列中的项目数。
iterator
属性
只读
public Iterator getIterator()
返回遍历这个项目队列的迭代器。 此方法为接口IteratorAggregate强制要求实现。
方法详细
__construct()
方法
public void __construct(array $data=NULL)
| ||
$data | array | 初始化的数据。默认为null,意味着不会初始化。 |
public function __construct($data=null)
{
if($data!==null)
$this->copyFrom($data);
}
构造方法。 根据数组或者迭代对象初始化这个队列。
clear()
方法
public void clear()
|
public function clear()
{
$this->_c=0;
$this->_d=array();
}
删除队列中所有项目。
contains()
方法
public boolean contains(mixed $item)
| ||
$item | mixed | 项目对象 |
{return} | boolean | 返回值说明队列中是否包含该项目 |
public function contains($item)
{
return array_search($item,$this->_d,true)!==false;
}
copyFrom()
方法
public void copyFrom(mixed $data)
| ||
$data | mixed | 要复制的数据, 只能是数组或者继承于Traversable的对象。 |
public function copyFrom($data)
{
if(is_array($data) || ($data instanceof Traversable))
{
$this->clear();
foreach($data as $item)
{
$this->_d[]=$item;
++$this->_c;
}
}
else if($data!==null)
throw new CException(Yii::t('yii','Queue data must be an array or an object implementing Traversable.'));
}
将迭代器中的数据复制到队列。 注意,队列中已经存在的数据会被首先删除。
count()
方法
public integer count()
| ||
{return} | integer | 返回队列中的项目数。 |
public function count()
{
return $this->getCount();
}
返回队列中的项目数。 此方法为接口Countable强制要求实现。
dequeue()
方法
public mixed dequeue()
| ||
{return} | mixed | 返回处于列表开始处的对象 |
public function dequeue()
{
if($this->_c===0)
throw new CException(Yii::t('yii','The queue is empty.'));
else
{
--$this->_c;
return array_shift($this->_d);
}
}
删除并返回处于列表开始处的对象。
enqueue()
方法
public void enqueue(mixed $item)
| ||
$item | mixed | 要添加到队列尾部的项目 |
public function enqueue($item)
{
++$this->_c;
array_push($this->_d,$item);
}
添加一个对象到队列尾部。
getCount()
方法
public integer getCount()
| ||
{return} | integer | 返回队列中的项目数。 |
public function getCount()
{
return $this->_c;
}
返回队列中的项目数。
getIterator()
方法
public Iterator getIterator()
| ||
{return} | Iterator | 返回遍历这个项目队列的迭代器。 |
public function getIterator()
{
return new CQueueIterator($this->_d);
}
返回遍历这个项目队列的迭代器。 此方法为接口IteratorAggregate强制要求实现。
peek()
方法
public mixed peek()
| ||
{return} | mixed | 返回处于队列头部的项目。 |
public function peek()
{
if($this->_c===0)
throw new CException(Yii::t('yii','The queue is empty.'));
else
return $this->_d[0];
}
返回处于队列头部的项目。
toArray()
方法
public array toArray()
| ||
{return} | array | 队列中的项目列表。 |
public function toArray()
{
return $this->_d;
}