主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数 |
QPtrVector类参考
QPtrVector类是提供矢量(数组)的模板集合类。 详情请见……
#include <qptrvector.h>
继承了QPtrCollection。
公有成员
- QPtrVector ()
- QPtrVector ( uint size )
- QPtrVector ( const QPtrVector<type> & v )
- ~QPtrVector ()
- QPtrVector<type> & operator= ( const QPtrVector<type> & v )
- bool operator== ( const QPtrVector<type> & v ) const
- type ** data () const
- uint size () const
- virtual uint count () const
- bool isEmpty () const
- bool isNull () const
- bool resize ( uint size )
- bool insert ( uint i, const type * d )
- bool remove ( uint i )
- type * take ( uint i )
- virtual void clear ()
- bool fill ( const type * d, int size = -1 )
- void sort ()
- int bsearch ( const type * d ) const
- int findRef ( const type * d, uint i = 0 ) const
- int find ( const type * d, uint i = 0 ) const
- uint containsRef ( const type * d ) const
- uint contains ( const type * d ) const
- type * operator[] ( int i ) const
- type * at ( uint i ) const
- void toList ( QGList * list ) const
重要继承成员
- bool autoDelete () const
- void setAutoDelete ( bool enable )
保护成员
- virtual int compareItems ( QPtrCollection::Item d1, QPtrCollection::Item d2 )
- virtual QDataStream & read ( QDataStream & s, QPtrCollection::Item & item )
- virtual QDataStream & write ( QDataStream & s, QPtrCollection::Item item ) const
详细描述
QPtrVector类是提供矢量(数组)的模板集合类。
QValueVector是可以替代这个类的的一个可兼容STL的的选择。
QPtrVector被设计为一个模板类。定义一个模板实例QPtrVector<X>就创建了一个操作X(X*)指针的矢量。
矢量和数组是相同的。QPtrVector和QMemArray的主要不同就是QPtrVector存储元素的指针,而QMemArray存储元素自身(比如,QMemArray是基于类的并且QPtrVector是基于指针的)。
可以使用insert()或fill()把项添加到矢量中。可以使用remove()来移除项。你可以使用at()得到一个指定索引位置的项的指针。
除非是相反的状态,如果自动删除生效,所有从矢量中移除项的函数也都会将它们指向的元素删除。默认情况下,自动删除是失效的,请参考setAutoDelete()。这个行为可以通过在子类中重新实现虚函数deleteItem()来改变。
比较项的函数(比如find()和sort())也都使用虚函数compareItems()。这个函数的默认实现只是比较指针值。在子类中中心实现compareItems()来获得基于项的内容的搜索和排序。你可以使用findRef()在矢量中执行一个对指针的线性搜索,或者使用bsearch()在一个排好序的矢量中执行一个二进制搜索。你可以使用contains()或containsRef()来统计一个项在矢量中出现的次数。
成员函数文档
QPtrVector::QPtrVector ()
构造一个零矢量。
也可以参考isNull()。
QPtrVector::QPtrVector ( uint size )
构造一个空间为size项的矢量。如果size==0,构造一个零矢量。
矢量中所有size个位置都被初始化为0。
也可以参考size()、resize()和isNull()。
QPtrVector::QPtrVector ( const QPtrVector<type> & v )
构造一个v的复制。只有指针被复制(比如,浅复制)。
QPtrVector::~QPtrVector ()
从矢量中移除所有的项,并且销毁矢量自己。
也可以参考clear()。
type * QPtrVector::at ( uint i ) const
返回在i位置的项,或者如果在那个位置没有项,返回0。i必须小于size()。
bool QPtrCollection::autoDelete () const
返回自动删除选项的设置。默认为假。
也可以参考setAutoDelete()。
int QPtrVector::bsearch ( const type * d ) const
在一个排好序的数组中,使用二进制搜索找到d第一次出现的位置。对于一个排好序的数组,这个比做线性搜索的find()要快很多。
返回d的位置,或者如果d没有被找到返回-1。d必须不能为0。
比较项使用虚函数compareItems()。
void QPtrVector::clear () [虚]
从矢量中删除所有项,并且销毁矢量自己。
矢量变为一个零矢量。
也可以参考isNull()。
从QPtrCollection中重新实现的。
int QPtrVector::compareItems ( QPtrCollection::Item d1, QPtrCollection::Item d2 ) [虚 保护]
这个虚函数比较两个列表项:
返回:
- 如果d1==d2,返回0
- 如果d1!=d2,返回非0
这个函数返回int而不是bool,这样重新实现就可以返回3个值并且用来进行排序:
- 如果d1==d2,返回0
- 如果d1>d2,返回>0(正整数)
- 如果d1<d2,返回<0(负整数)
sort()和bsearch()函数需要compareItems()像这里所描述的那样被实现。
这个函数不应该修改矢量因为一些常量函数会调用compareItems()。
uint QPtrVector::contains ( const type * d ) const
返回矢量中项d出现的次数。
比较项使用虚函数compareItems()。
也可以参考containsRef()。
uint QPtrVector::containsRef ( const type * d ) const
返回矢量中项指针d出现的次数。
这个函数不使用compareItems()来比较项。
也可以参考findRef()。
uint QPtrVector::count () const [虚]
返回矢量中项的数量。如果count()==0,这个矢量为空。
从QPtrCollection中重新实现。
type ** QPtrVector::data () const
返回指向实际矢量数据(type*的数组)的指针。如果data()==0(零指针),矢量为零矢量。
也可以参考isNull()。
bool QPtrVector::fill ( const type * d, int size = -1 )
在矢量的所有位置插入项d。任何存在的项都被移除。如果d为0,这个矢量变为空。
如果size>=0,矢量首先被重新定义大小为size。默认情况下,size为-1。
如果成功,返回真,或者如果内存不能被分配(只有在重定义大小被需要的时候),返回假。
也可以参考resize()、insert()和isEmpty()。
int QPtrVector::find ( const type * d, uint i = 0 ) const
在矢量中使用线性搜索找到项d第一次出现的位置。这个搜索从i位置开始,i必须小于size()。i默认为0,比如,搜索从矢量的开始处开始。
返回d的位置,或者如果d没有被找到,返回-1。
比较项使用虚函数compareItems()。
使用更快的bsearch()来搜索一个排好序的矢量。
int QPtrVector::findRef ( const type * d, uint i = 0 ) const
在矢量中使用线性搜索找到项指针d第一次出现的位置。这个搜索从i位置开始,i必须小于size()。i默认为0,比如,搜索从矢量的开始处开始。
返回d的位置,或者如果d没有被找到,返回-1。
这个函数不使用compareItems()来比较项。
使用更快的bsearch()来搜索一个排好序的矢量。
bool QPtrVector::insert ( uint i, const type * d )
设置矢量中的位置i来包含项d。i必须小于size()。在i位置的任何以前的元素被移除了。
也可以参考at()。
bool QPtrVector::isEmpty () const
如果矢量为空,返回真,否则返回假。
也可以参考count()。
bool QPtrVector::isNull () const
如果矢量为零,返回真,否则返回假。
也可以参考size()。
QPtrVector<type> & QPtrVector::operator= ( const QPtrVector<type> & v )
把v赋值给这个矢量并且返回这个矢量的引用。
这个矢量首先被清空并且然后v所有的项都被复制到矢量中。只有指针被复制(比如,浅复制)。
也可以参考clear()。
bool QPtrVector::operator== ( const QPtrVector<type> & v ) const
如果这个矢量和v相等,返回真,否则返回假。type * QPtrVector::operator[] ( int i ) const
返回在位置i的项,或者如果在那个位置没有项,返回0。i必须小于size()。
等于at( i )。
也可以参考at()。
QDataStream & QPtrVector::read ( QDataStream & s, QPtrCollection::Item & item ) [虚 保护]
从流s中读入一个矢量项item并且返回流的引用。
默认实现是设置item为0。
也可以参考write()。
bool QPtrVector::remove ( uint i )
如果有的话,移除矢量中位置i的项。i必须小于size()。
只要i不超出范围,就返回真。
bool QPtrVector::resize ( uint size )
重定义(扩大或缩小)矢量的大小为size。如果size==0,数组变为零数组。矢量中在size位置的或者超出的任何项被一出了。新的位置被初始化为0。
如果成功,返回真,或者如果内存不能被分配,返回假。
void QPtrCollection::setAutoDelete ( bool enable )
如果enable为真,设置集合自动删除它的内容并且如果enable为假,就从不删除它们。
如果自动删除被打开,当集合被删除时,集合中的所有项都会被删除。如果集合拥有项的唯一指针,这个将是非常方便的。
为了安全,默认设置为假。如果你把它打开,在复制集合时请注意。你也许会发现你自己的两个集合删除相同的项。
注意在子类中自动删除设置也许会影响其它函数。例如,一个有remove()函数的子类将会从它的数据结构中移除这个项,并且如果自动删除生效,也将会删除这个项。
也可以参考autoDelete()。
矢量:grapher/grapher.cpp、scribble/scribble.cpp和table/bigtable/main.cpp。
uint QPtrVector::size () const
返回矢量的大小,比如矢量位置的数量。这也是矢量中可以保存元素的最大数量。
如果size()==0,这个矢量为空矢量。
也可以参考isNull()、resize()和count()。
void QPtrVector::sort ()
按升序排列项。任何空的位置将被放在最后面。
比较项使用虚函数compareItems()。
也可以参考bsearch()。
type * QPtrVector::take ( uint i )
返回矢量中位置i的项,并且从矢量中移除项。i必须小于size()。如果在位置i没有项,返回0。
与remove()形成对照,这个函数不调用deleteItem()来比较项。
void QPtrVector::toList ( QGList * list ) const
复制这个矢量的所有项到列表list中。list首先被清空并且然后被添加到list中。
也可以参考QPtrList、QPtrStack和QPtrQueue。
QDataStream & QPtrVector::write ( QDataStream & s, QPtrCollection::Item item ) const [虚 保护]
写一个矢量项item到流s中并且返回流的引用。
默认实现是不做任何事。
也可以参考read()。
这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。
Copyright © 2002 Trolltech | Trademarks | 译者:Cavendish | Qt 3.0.5版
|