📄 qptrvector.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/reggie/tmp/qt-3.0-reggie-5401/qt-x11-commercial-3.0.5/doc/qptrvector.doc:42 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Translator" content="Cavendish">
<meta name="Qt zh_CN Documents Website" content="http://www.qiliang.net/qt">
<title>QPtrVector类</title>
<style type="text/css"><!--
h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; font-family: "Times New Roman" }
--></style>
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr bgcolor="#E5E5E5">
<td valign=center>
<a href="index.html">
<font color="#004faf">主页</font></a>
| <a href="classes.html">
<font color="#004faf">所有的类</font></a>
| <a href="mainclasses.html">
<font color="#004faf">主要的类</font></a>
| <a href="annotated.html">
<font color="#004faf">注释的类</font></a>
| <a href="groups.html">
<font color="#004faf">分组的类</font></a>
| <a href="functions.html">
<font color="#004faf">函数</font></a>
</td>
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table>
<h1 align=center>QPtrVector类参考</h1>
<p>QPtrVector类是提供矢量(数组)的模板集合类。
<a href="#details">详情请见……</a>
<p><tt>#include <<a href="qptrvector-h.html">qptrvector.h</a>></tt>
<p>继承了<a href="qptrcollection.html">QPtrCollection</a>。
<p><a href="qptrvector-members.html">所有成员函数的列表。</a>
<h2>公有成员</h2>
<ul>
<li><div class=fn><a href="#QPtrVector"><b>QPtrVector</b></a> ()</div></li>
<li><div class=fn><a href="#QPtrVector-2"><b>QPtrVector</b></a> ( uint size )</div></li>
<li><div class=fn><a href="#QPtrVector-3"><b>QPtrVector</b></a> ( const QPtrVector<type> & v )</div></li>
<li><div class=fn><a href="#~QPtrVector"><b>~QPtrVector</b></a> ()</div></li>
<li><div class=fn>QPtrVector<type> & <a href="#operator-eq"><b>operator=</b></a> ( const QPtrVector<type> & v )</div></li>
<li><div class=fn>bool <a href="#operator-eq-eq"><b>operator==</b></a> ( const QPtrVector<type> & v ) const</div></li>
<li><div class=fn>type ** <a href="#data"><b>data</b></a> () const</div></li>
<li><div class=fn>uint <a href="#size"><b>size</b></a> () const</div></li>
<li><div class=fn>virtual uint <a href="#count"><b>count</b></a> () const</div></li>
<li><div class=fn>bool <a href="#isEmpty"><b>isEmpty</b></a> () const</div></li>
<li><div class=fn>bool <a href="#isNull"><b>isNull</b></a> () const</div></li>
<li><div class=fn>bool <a href="#resize"><b>resize</b></a> ( uint size )</div></li>
<li><div class=fn>bool <a href="#insert"><b>insert</b></a> ( uint i, const type * d )</div></li>
<li><div class=fn>bool <a href="#remove"><b>remove</b></a> ( uint i )</div></li>
<li><div class=fn>type * <a href="#take"><b>take</b></a> ( uint i )</div></li>
<li><div class=fn>virtual void <a href="#clear"><b>clear</b></a> ()</div></li>
<li><div class=fn>bool <a href="#fill"><b>fill</b></a> ( const type * d, int size = -1 )</div></li>
<li><div class=fn>void <a href="#sort"><b>sort</b></a> ()</div></li>
<li><div class=fn>int <a href="#bsearch"><b>bsearch</b></a> ( const type * d ) const</div></li>
<li><div class=fn>int <a href="#findRef"><b>findRef</b></a> ( const type * d, uint i = 0 ) const</div></li>
<li><div class=fn>int <a href="#find"><b>find</b></a> ( const type * d, uint i = 0 ) const</div></li>
<li><div class=fn>uint <a href="#containsRef"><b>containsRef</b></a> ( const type * d ) const</div></li>
<li><div class=fn>uint <a href="#contains"><b>contains</b></a> ( const type * d ) const</div></li>
<li><div class=fn>type * <a href="#operator[]"><b>operator[]</b></a> ( int i ) const</div></li>
<li><div class=fn>type * <a href="#at"><b>at</b></a> ( uint i ) const</div></li>
<li><div class=fn>void <a href="#toList"><b>toList</b></a> ( QGList * list ) const</div></li>
</ul>
<h2>重要继承成员</h2>
<ul>
<li><div class=fn>bool <a href="#autoDelete"><b>autoDelete</b></a> () const</div></li>
<li><div class=fn>void <a href="#setAutoDelete"><b>setAutoDelete</b></a> ( bool enable )</div></li>
</ul>
<h2>保护成员</h2>
<ul>
<li><div class=fn>virtual int <a href="#compareItems"><b>compareItems</b></a> ( QPtrCollection::Item d1, QPtrCollection::Item d2 )</div></li>
<li><div class=fn>virtual QDataStream & <a href="#read"><b>read</b></a> ( QDataStream & s, QPtrCollection::Item & item )</div></li>
<li><div class=fn>virtual QDataStream & <a href="#write"><b>write</b></a> ( QDataStream & s, QPtrCollection::Item item ) const</div></li>
</ul>
<hr><a name="details"></a><h2>详细描述</h2>
<p>QPtrVector类是提供矢量(数组)的模板集合类。
<p>
<p>
<p> <a href="qvaluevector.html">QValueVector</a>是可以替代这个类的的一个可兼容STL的的选择。
<p> QPtrVector被设计为一个模板类。定义一个模板实例QPtrVector<X>就创建了一个操作X(X*)指针的矢量。
<p> 矢量和数组是相同的。QPtrVector和<a href="qmemarray.html">QMemArray</a>的主要不同就是QPtrVector存储元素的指针,而QMemArray存储元素自身(比如,QMemArray是基于类的并且QPtrVector是基于指针的)。
<p> 可以使用<a href="#insert">insert</a>()或<a href="#fill">fill</a>()把项添加到矢量中。可以使用<a href="#remove">remove</a>()来移除项。你可以使用<a href="#at">at</a>()得到一个指定索引位置的项的指针。
<p> 除非是相反的状态,如果<a href="qptrcollection.html#setAutoDelete">自动删除</a>生效,所有从矢量中移除项的函数也都会将它们指向的元素删除。默认情况下,自动删除是失效的,请参考<a href="qptrcollection.html#setAutoDelete">setAutoDelete</a>()。这个行为可以通过在子类中重新实现虚函数<a href="qptrcollection.html#deleteItem">deleteItem</a>()来改变。
<p> 比较项的函数(比如<a href="#find">find</a>()和<a href="#sort">sort</a>())也都使用虚函数<a href="#compareItems">compareItems</a>()。这个函数的默认实现只是比较指针值。在子类中中心实现compareItems()来获得基于项的内容的搜索和排序。你可以使用<a href="#findRef">findRef</a>()在矢量中执行一个对指针的线性搜索,或者使用<a href="#bsearch">bsearch</a>()在一个排好序的矢量中执行一个二进制搜索。你可以使用<a href="#contains">contains</a>()或<a href="#containsRef">containsRef</a>()来统计一个项在矢量中出现的次数。
<p> <p>也可以参考<a href="qmemarray.html">QMemArray</a>和<a href="tools.html">非GUI类</a>。
<hr><h2>成员函数文档</h2>
<h3 class=fn><a name="QPtrVector"></a>QPtrVector::QPtrVector ()
</h3>
<p> 构造一个零矢量。
<p> <p>也可以参考<a href="#isNull">isNull</a>()。
<h3 class=fn><a name="QPtrVector-2"></a>QPtrVector::QPtrVector ( uint size )
</h3>
<p> 构造一个空间为<em>size</em>项的矢量。如果<em>size</em>==0,构造一个零矢量。
<p> 矢量中所有<em>size</em>个位置都被初始化为0。
<p> <p>也可以参考<a href="#size">size</a>()、<a href="#resize">resize</a>()和<a href="#isNull">isNull</a>()。
<h3 class=fn><a name="QPtrVector-3"></a>QPtrVector::QPtrVector ( const <a href="qptrvector.html">QPtrVector</a><type> & v )
</h3>
<p> 构造一个<em>v</em>的复制。只有指针被复制(比如,<a href="shclass.html#shallow-copy">浅复制</a>)。
<h3 class=fn><a name="~QPtrVector"></a>QPtrVector::~QPtrVector ()
</h3>
<p> 从矢量中移除所有的项,并且销毁矢量自己。
<p> <p>也可以参考<a href="#clear">clear</a>()。
<h3 class=fn>type * <a name="at"></a>QPtrVector::at ( uint i ) const
</h3>
<p> 返回在<em>i</em>位置的项,或者如果在那个位置没有项,返回0。<em>i</em>必须小于<a href="#size">size</a>()。
<h3 class=fn>bool <a name="autoDelete"></a>QPtrCollection::autoDelete () const
</h3>
<p> 返回自动删除选项的设置。默认为假。
<p> <p>也可以参考<a href="qptrcollection.html#setAutoDelete">setAutoDelete</a>()。
<h3 class=fn>int <a name="bsearch"></a>QPtrVector::bsearch ( const type * d ) const
</h3>
<p> 在一个排好序的数组中,使用二进制搜索找到<em>d</em>第一次出现的位置。对于一个排好序的数组,这个比做线性搜索的<a href="#find">find</a>()要快很多。
<p> 返回<em>d</em>的位置,或者如果<em>d</em>没有被找到返回-1。<em>d</em>必须不能为0。
<p> 比较项使用虚函数<a href="#compareItems">compareItems</a>()。
<p> <p>也可以参考<a href="#sort">sort</a>()和<a href="#find">find</a>()。
<h3 class=fn>void <a name="clear"></a>QPtrVector::clear ()<tt> [虚]</tt>
</h3>
<p> 从矢量中删除所有项,并且销毁矢量自己。
<p> 矢量变为一个零矢量。
<p> <p>也可以参考<a href="#isNull">isNull</a>()。
<p>从<a href="qptrcollection.html#clear">QPtrCollection</a>中重新实现的。
<h3 class=fn>int <a name="compareItems"></a>QPtrVector::compareItems ( <a href="qptrcollection.html#Item">QPtrCollection::Item</a> d1, <a href="qptrcollection.html#Item">QPtrCollection::Item</a> d2 )<tt> [虚 保护]</tt>
</h3>
<p> 这个虚函数比较两个列表项:
<p> 返回:
<ul>
<li> 如果<em>d1</em>==<em>d2</em>,返回0
<li> 如果<em>d1</em>!=<em>d2</em>,返回非0
</ul>
<p> 这个函数返回<em>int</em>而不是<em>bool</em>,这样重新实现就可以返回3个值并且用来进行排序:
<ul>
<li> 如果<em>d1</em>==<em>d2</em>,返回0
<li> 如果<em>d1</em>><em>d2</em>,返回>0(正整数)
<li> 如果<em>d1</em><<em>d2</em>,返回<0(负整数)
</ul>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -