⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qvaluelist.html

📁 这是qt3的帮助文档的中文版
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!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/qvaluelist.doc:41 -->
<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>QValueList类</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>QValueList类参考</h1>

<p>QValueList类是一个提供双向链表的基于值的模板类。
<a href="#details">详情请见……</a>
<p><tt>#include &lt;<a href="qvaluelist-h.html">qvaluelist.h</a>&gt;</tt>
<p>被<a href="qcanvasitemlist.html">QCanvasItemList</a>、<a href="qstringlist.html">QStringList</a>和<a href="qvaluestack.html">QValueStack</a>继承。
<p><a href="qvaluelist-members.html">所有成员函数的列表。</a>
<h2>公有成员</h2>
<ul>
<li><div class=fn>typedef QValueListIterator&lt;T&gt;&nbsp;<a href="#iterator"><b>iterator</b></a></div></li>
<li><div class=fn>typedef QValueListConstIterator&lt;T&gt;&nbsp;<a href="#const_iterator"><b>const_iterator</b></a></div></li>
<li><div class=fn>typedef T&nbsp;<a href="#value_type"><b>value_type</b></a></div></li>
<li><div class=fn>typedef value_type&nbsp;*&nbsp;<a href="#pointer"><b>pointer</b></a></div></li>
<li><div class=fn>typedef const&nbsp;value_type&nbsp;*&nbsp;<a href="#const_pointer"><b>const_pointer</b></a></div></li>
<li><div class=fn>typedef value_type&nbsp;&amp;&nbsp;<a href="#reference"><b>reference</b></a></div></li>
<li><div class=fn>typedef const&nbsp;value_type&nbsp;&amp;&nbsp;<a href="#const_reference"><b>const_reference</b></a></div></li>
<li><div class=fn>typedef size_t&nbsp;<a href="#size_type"><b>size_type</b></a></div></li>
<li><div class=fn><a href="#QValueList"><b>QValueList</b></a> ()</div></li>
<li><div class=fn><a href="#QValueList-2"><b>QValueList</b></a> ( const&nbsp;QValueList&lt;T&gt;&nbsp;&amp;&nbsp;l )</div></li>
<li><div class=fn><a href="#QValueList-3"><b>QValueList</b></a> ( const&nbsp;std::list&lt;T&gt;&nbsp;&amp;&nbsp;l )</div></li>
<li><div class=fn><a href="#~QValueList"><b>~QValueList</b></a> ()</div></li>
<li><div class=fn>QValueList&lt;T&gt; &amp; <a href="#operator-eq"><b>operator=</b></a> ( const&nbsp;QValueList&lt;T&gt;&nbsp;&amp;&nbsp;l )</div></li>
<li><div class=fn>QValueList&lt;T&gt; &amp; <a href="#operator-eq-2"><b>operator=</b></a> ( const&nbsp;std::list&lt;T&gt;&nbsp;&amp;&nbsp;l )</div></li>
<li><div class=fn>bool <a href="#operator-eq-eq-2"><b>operator==</b></a> ( const&nbsp;std::list&lt;T&gt;&nbsp;&amp;&nbsp;l ) const</div></li>
<li><div class=fn>bool <a href="#operator-eq-eq"><b>operator==</b></a> ( const&nbsp;QValueList&lt;T&gt;&nbsp;&amp;&nbsp;l ) const</div></li>
<li><div class=fn>bool <a href="#operator!-eq"><b>operator!=</b></a> ( const&nbsp;QValueList&lt;T&gt;&nbsp;&amp;&nbsp;l ) const</div></li>
<li><div class=fn>iterator <a href="#begin-2"><b>begin</b></a> ()</div></li>
<li><div class=fn>const_iterator <a href="#begin"><b>begin</b></a> () const</div></li>
<li><div class=fn>iterator <a href="#end"><b>end</b></a> ()</div></li>
<li><div class=fn>const_iterator <a href="#end-2"><b>end</b></a> () const</div></li>
<li><div class=fn>iterator <a href="#insert"><b>insert</b></a> ( iterator&nbsp;it, const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>uint <a href="#remove-2"><b>remove</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>void <a href="#clear"><b>clear</b></a> ()</div></li>
<li><div class=fn>QValueList&lt;T&gt; &amp; <a href="#operator-lt-lt"><b>operator&lt;&lt;</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>size_type <a href="#size"><b>size</b></a> () const</div></li>
<li><div class=fn>bool <a href="#empty"><b>empty</b></a> () const</div></li>
<li><div class=fn>void <a href="#push_front"><b>push_front</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>void <a href="#push_back"><b>push_back</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>iterator <a href="#erase"><b>erase</b></a> ( iterator&nbsp;it )</div></li>
<li><div class=fn>iterator <a href="#erase-2"><b>erase</b></a> ( iterator&nbsp;first, iterator&nbsp;last )</div></li>
<li><div class=fn>reference <a href="#front"><b>front</b></a> ()</div></li>
<li><div class=fn>const_reference <a href="#front-2"><b>front</b></a> () const</div></li>
<li><div class=fn>reference <a href="#back"><b>back</b></a> ()</div></li>
<li><div class=fn>const_reference <a href="#back-2"><b>back</b></a> () const</div></li>
<li><div class=fn>void <a href="#pop_front"><b>pop_front</b></a> ()</div></li>
<li><div class=fn>void <a href="#pop_back"><b>pop_back</b></a> ()</div></li>
<li><div class=fn>void <a href="#insert-2"><b>insert</b></a> ( iterator&nbsp;pos, size_type&nbsp;n, const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>QValueList&lt;T&gt; <a href="#operator+"><b>operator+</b></a> ( const&nbsp;QValueList&lt;T&gt;&nbsp;&amp;&nbsp;l ) const</div></li>
<li><div class=fn>QValueList&lt;T&gt; &amp; <a href="#operator+-eq"><b>operator+=</b></a> ( const&nbsp;QValueList&lt;T&gt;&nbsp;&amp;&nbsp;l )</div></li>
<li><div class=fn>iterator <a href="#fromLast-2"><b>fromLast</b></a> ()</div></li>
<li><div class=fn>const_iterator <a href="#fromLast"><b>fromLast</b></a> () const</div></li>
<li><div class=fn>bool <a href="#isEmpty"><b>isEmpty</b></a> () const</div></li>
<li><div class=fn>iterator <a href="#append"><b>append</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>iterator <a href="#prepend"><b>prepend</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>iterator <a href="#remove"><b>remove</b></a> ( iterator&nbsp;it )</div></li>
<li><div class=fn>T &amp; <a href="#first"><b>first</b></a> ()</div></li>
<li><div class=fn>const T &amp; <a href="#first-2"><b>first</b></a> () const</div></li>
<li><div class=fn>T &amp; <a href="#last"><b>last</b></a> ()</div></li>
<li><div class=fn>const T &amp; <a href="#last-2"><b>last</b></a> () const</div></li>
<li><div class=fn>T &amp; <a href="#operator[]-2"><b>operator[]</b></a> ( size_type&nbsp;i )</div></li>
<li><div class=fn>const T &amp; <a href="#operator[]"><b>operator[]</b></a> ( size_type&nbsp;i ) const</div></li>
<li><div class=fn>iterator <a href="#at-2"><b>at</b></a> ( size_type&nbsp;i )</div></li>
<li><div class=fn>const_iterator <a href="#at"><b>at</b></a> ( size_type&nbsp;i ) const</div></li>
<li><div class=fn>iterator <a href="#find"><b>find</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>const_iterator <a href="#find-2"><b>find</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x ) const</div></li>
<li><div class=fn>iterator <a href="#find-3"><b>find</b></a> ( iterator&nbsp;it, const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>const_iterator <a href="#find-4"><b>find</b></a> ( const_iterator&nbsp;it, const&nbsp;T&nbsp;&amp;&nbsp;x ) const</div></li>
<li><div class=fn>int <a href="#findIndex"><b>findIndex</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x ) const</div></li>
<li><div class=fn>size_type <a href="#contains"><b>contains</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x ) const</div></li>
<li><div class=fn>size_type <a href="#count"><b>count</b></a> () const</div></li>
<li><div class=fn>QValueList&lt;T&gt; &amp; <a href="#operator+-eq-2"><b>operator+=</b></a> ( const&nbsp;T&nbsp;&amp;&nbsp;x )</div></li>
<li><div class=fn>typedef QValueListIterator&lt;T&gt;&nbsp;<a href="#Iterator"><b>Iterator</b></a></div></li>
<li><div class=fn>typedef QValueListConstIterator&lt;T&gt;&nbsp;<a href="#ConstIterator"><b>ConstIterator</b></a></div></li>
</ul>
<h2>相关函数</h2>
<ul>
<li><div class=fn>QDataStream &amp; <a href="#operator-gt-gt"><b>operator&gt;&gt;</b></a> ( QDataStream&nbsp;&amp;&nbsp;s, QValueList&lt;T&gt;&nbsp;&amp;&nbsp;l )</div></li>
<li><div class=fn>QDataStream &amp; <a href="#operator-lt-lt-2"><b>operator&lt;&lt;</b></a> ( QDataStream&nbsp;&amp;&nbsp;s, const&nbsp;QValueList&lt;T&gt;&nbsp;&amp;&nbsp;l )</div></li>
</ul>
<hr><a name="details"></a><h2>详细描述</h2>


QValueList类是一个提供双向链表的基于值的模板类。
<p> 



<p> QValueList是一个像STL一样的列表容器的Qt的实现。如果标准<tt>列表</tt>不能提供时,你可以在你的应用程序中使用它。QValueList是<a href="qtl.html">Qt模板库</a>的一部分。
<p> QValueList&lt;T&gt;定义了一个创建了一个全部为类T的值的列表的一个模板实例。注意QValueList不是存储指针为列表的成员,它保存每个成员的复制。这也就是为什么这些类被称为“基于值”,而<a href="qptrlist.html">QPtrList</a>和<a href="qdict.html">QDict</a>是“基于指针”。
<p> QValueList包含并管理一个类型为T的对象的集合并且提供允许找到被包含的对象的迭代器。QValueList拥有它的项。关于更多的所有权语义,请参考<a href="qptrcollection.html">QPtrCollection</a>和其它一些基于指针的容器类。
<p> 一些类不能在QValueList中使用,例如,所有继承于<a href="qobject.html">QObject</a>的类和那些所有实现窗口部件的类。只有值可以用在QValueList中。一个类作为值必须提供以下几点:
<p> <ul>
<li> 一个复制构造函数
<li> 一个赋值操作符
<li> 一个默认构造函数,比如构造函数中没有使用任何参数。
</ul>
<p> 注意在没有明确的版本被提供的时候,C++默认实现操作符和复制函数。在很多情况下,这就足够了。
<p> QValueList的函数命名和其它Qt类是一致的(比如,<a href="#count">count</a>()、<a href="#isEmpty">isEmpty</a>())。QValueList也提供兼容STL算法的一些函数,比如<a href="#size">size</a>()和<a href="#empty">empty</a>()。已经熟悉STL的<tt>list</tt>的程序员也可以使用这些函数。
<p> 实例:
<pre>
class Employee
{
public:
    Employee(): sn(0) {}
    Employee( const <a href="qstring.html">QString</a>&amp; forename, const <a href="qstring.html">QString</a>&amp; surname, int salary )
        : fn(forename), sn(surname), sal(salary)
    {}

    <a href="qstring.html">QString</a> forename() const { return fn; }
    <a href="qstring.html">QString</a> surname() const { return sn; }
    int salary() const { return sal; }
    void setSalary( int salary ) { sal = salary; }
private:
    <a href="qstring.html">QString</a> fn;
    <a href="qstring.html">QString</a> sn;
    int sal;
};

    typedef QValueList&lt;Employee&gt; EmployeeList;
    EmployeeList list;

    list.append( Employee("John", "Doe", 50000) );
    list.append( Employee("Jane", "Williams", 80000) );
    list.append( Employee("Tom", "Jones", 60000) );

    Employee mary( "Mary", "Hawthorne", 90000 );
    list.append( mary );
    mary.setSalary( 100000 );

    EmployeeList::<a href="#iterator">iterator</a> it;
    for ( it = list.begin(); it != list.end(); ++it )
        cout &lt;&lt; (*it).surname().latin1() &lt;&lt; ", " &lt;&lt;
                (*it).forename().latin1() &lt;&lt; " earns " &lt;&lt;
                (*it).salary() &lt;&lt; endl;

    // 输出:
    // Doe, John earns 50000
    // Williams, Jane earns 80000
    // Hawthorne, Mary earns 90000
    // Jones, Tom earns 60000
  </pre>
 
<p> 注意最后对Mary的薪水的改变并没有影响列表中的值,这是因为列表中创建了一个Mary条目的复制。
<p> 这里有几种方法在列表中找到项。<a href="#begin">begin</a>()和<a href="#end">end</a>()函数返回列表中开始和结尾的迭代器。迭代器的优点是你可以通过对迭代器加/减就可以实现从当前位置向前/后移动了。end()返回的迭代器指向的是容器中最后一个之后的值。结尾之后的迭代器也是和列表关联的,它属于列表,尽管它是<em>不</em>可以解除引用的,<a href="qwmatrix.html#operator*-5">operator*</a>()不能返回一个被良好定义的值。如果列表是空的(<a href="#empty">empty</a>()),begin()和end()返回的值一样。
<p> 另一个在列表中找到项的方法是使用<a href="qtl.html#qFind">qFind()</a>算法。比如:
<p> <pre>
    QValueList&lt;int&gt; list;
    ...
    QValueList&lt;int&gt;::<a href="#iterator">iterator</a> it = qFind( list.<a href="#begin">begin</a>(), list.<a href="#end">end</a>(), 3 );
    if ( it != list.<a href="#end">end</a>() )
        // it指向被找到的项。
</pre>
 
<p> 同一时间在列表中使用多个迭代器是安全的。如果列表中的一些成员被移除,只有那些指向被移除的成员的迭代器变为无效。向列表中插入项不会使任何一个迭代器无效。为了方便,函数<a href="#last">last</a>()返回列表中最后一个项的引用,并且<a href="#first">first</a>()返回第一个项的引用。如果列表为空(empty()),last()和first()都会有未定义的行为发生(你的应用程序将会崩溃或者会做一些不可预知的事情)。使用last()和first()时需要注意,比如:
<p> <pre>
    QValueList&lt;int&gt; list;
    list.<a href="#append">append</a>( 1 );
    list.<a href="#append">append</a>( 2 );
    list.<a href="#append">append</a>( 3 );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -