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

📄 array_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00190 
<a name="l00195"></a><a class="code" href="classdbArray.html#dbArraya7">00195</a>     T <span class="keyword">const</span>&amp; <a class="code" href="classdbArray.html#dbArraya7">last</a>() {
00196         assert(len &gt; 0);
00197         <span class="keywordflow">return</span> data[len-1];
00198     }
00199 
<a name="l00207"></a><a class="code" href="classdbArray.html#dbArraya8">00207</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya8">assign</a>(T <span class="keyword">const</span>* ptr, size_t size, <span class="keywordtype">bool</span> copy = <span class="keyword">true</span>) { 
00208         <span class="keywordflow">if</span> (allocated) { 
00209             <span class="keyword">delete</span>[] data;
00210         }
00211         len = size;
00212         <span class="keywordflow">if</span> (copy &amp;&amp; size != 0) { 
00213             data = <span class="keyword">new</span> T[size];
00214             memcpy(data, ptr, size);    
00215             allocated = size;
00216         } <span class="keywordflow">else</span> { 
00217             data = (T*)ptr;
00218             allocated = 0;
00219         }
00220     }
00221 
<a name="l00227"></a><a class="code" href="classdbArray.html#dbArraya9">00227</a>     T <span class="keyword">const</span>&amp; <a class="code" href="classdbArray.html#dbArraya9">operator []</a>(size_t index)<span class="keyword"> const </span>{ 
00228         assert(index &lt; len);
00229         <span class="keywordflow">return</span> data[index];
00230     }
00231 
<a name="l00237"></a><a class="code" href="classdbArray.html#dbArraya10">00237</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya10">putat</a>(size_t index, T <span class="keyword">const</span>&amp; value) { 
00238         assert(index &lt; len);
00239         <span class="keywordflow">if</span> (!allocated) { 
00240             T* copy = <span class="keyword">new</span> T[len];
00241             memcpy(copy, data, len);
00242             data = copy;
00243             allocated = len;
00244         }
00245         data[index] = value;
00246     }
00247 
00248     
<a name="l00254"></a><a class="code" href="classdbArray.html#dbArraya11">00254</a>     T <span class="keyword">const</span>&amp; <a class="code" href="classdbArray.html#dbArraya11">getat</a>(size_t index)<span class="keyword"> const </span>{
00255         assert(index &lt; len);
00256         <span class="keywordflow">return</span> data[index];
00257     }
00258 
<a name="l00262"></a><a class="code" href="classdbArray.html#dbArraya12">00262</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya12">clear</a>() { 
00263         <span class="keywordflow">if</span> (allocated) {
00264             <span class="keyword">delete</span>[] data;
00265         }
00266         data = NULL;
00267         len = 0;
00268         allocated = 0;
00269     }
00270 
<a name="l00275"></a><a class="code" href="classdbArray.html#dbArraya13">00275</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya13">resize</a>(size_t size) { 
00276         <span class="keywordflow">if</span> (size &gt; len &amp;&amp; size &gt; allocated) { 
00277             T* p = <span class="keyword">new</span> T[size];
00278             memcpy(p, data, len);
00279             <span class="keywordflow">if</span> (allocated) { 
00280                 <span class="keyword">delete</span>[] data;
00281             }
00282             data = p;
00283             allocated = size;
00284         }
00285         len = size;
00286     }
00287 
<a name="l00292"></a><a class="code" href="classdbArray.html#dbArraya14">00292</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya14">append</a>(T <span class="keyword">const</span>&amp; value) { 
00293         <a class="code" href="classdbArray.html#dbArraya16">insert</a>(value, len);
00294     }
00295     
<a name="l00303"></a><a class="code" href="classdbArray.html#dbArraya15">00303</a>     <span class="keywordtype">int</span> <a class="code" href="classdbArray.html#dbArraya15">bsearch</a>(T value) {
00304         size_t l = 0, r = len;
00305         <span class="keywordflow">while</span> (l &lt; r) { 
00306             size_t m = (l + 1) &gt;&gt; 1;
00307             <span class="keywordflow">if</span> (data[m] &lt; value) { 
00308                 l = m + 1;
00309             } <span class="keywordflow">else</span> { 
00310                 r = m;
00311             }
00312         }
00313         <span class="keywordflow">return</span> r;
00314     }
00315 
<a name="l00321"></a><a class="code" href="classdbArray.html#dbArraya16">00321</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya16">insert</a>(T <span class="keyword">const</span>&amp; value, size_t index = 0) { 
00322         assert(index &lt;= len);
00323         <span class="keywordflow">if</span> (len &gt;= allocated) {
00324             size_t newSize = len == 0 ? 8 : len*2;
00325             T* p = <span class="keyword">new</span> T[newSize];
00326             memcpy(p, data, index);
00327             p[index] = value;
00328             memcpy(p+index+1, data+index, (len-index));
00329             <span class="keywordflow">if</span> (allocated) { 
00330                 <span class="keyword">delete</span>[] data;
00331             }
00332             data = p;
00333             allocated = newSize;
00334         } <span class="keywordflow">else</span> { 
00335             memmove(data+index+1, data+index, (len-index));
00336             data[index] = value;
00337         }
00338         len += 1;
00339     }
00340     
<a name="l00345"></a><a class="code" href="classdbArray.html#dbArraya17">00345</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya17">remove</a>(size_t index) { 
00346         assert(index &lt; len);
00347         len -= 1;
00348         <span class="keywordflow">if</span> (index != len &amp;&amp; !allocated) { 
00349             T* p = <span class="keyword">new</span> T[len];
00350             memcpy(p, data, index);
00351             memcpy(p+index, data+index+1, (len-index));
00352             allocated = len;
00353             data = p;
00354         } <span class="keywordflow">else</span> { 
00355             memmove(data+index, data+index+1, (len-index));
00356         }
00357     }
00358 
<a name="l00363"></a><a class="code" href="classdbArray.html#dbArraya18">00363</a>     T <span class="keyword">const</span>* <a class="code" href="classdbArray.html#dbArraya18">get</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data; }
00364 
<a name="l00369"></a><a class="code" href="classdbArray.html#dbArraya19">00369</a>     T* <a class="code" href="classdbArray.html#dbArraya19">update</a>() { 
00370         <span class="keywordflow">if</span> (!allocated) {
00371             T* copy = <span class="keyword">new</span> T[len];
00372             memcpy(copy, data, len);
00373             data = copy;
00374             allocated = len;
00375         }
00376         <span class="keywordflow">return</span> data; 
00377     }
00378 };
00379 
00385 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
00386 <span class="keywordtype">int</span> index(<a class="code" href="classdbArray.html">dbArray&lt;T&gt;</a> <span class="keyword">const</span>&amp; a, T value) {
00387     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, n = a.<a class="code" href="classdbAnyArray.html#dbArraya20">length</a>(); i &lt; n; i++) {
00388       <span class="keywordflow">if</span> (a[i] == value) {
00389           <span class="keywordflow">return</span> i;
00390       }
00391     }
00392     <span class="keywordflow">return</span> -1;
00393 }
00394 
00400 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;
00401 <span class="keywordtype">int</span> rindex(<a class="code" href="classdbArray.html">dbArray&lt;T&gt;</a> <span class="keyword">const</span>&amp; a, T value) {
00402     <span class="keywordtype">int</span> i = a.<a class="code" href="classdbAnyArray.html#dbArraya20">length</a>();
00403     <span class="keywordflow">while</span> (--i &gt;= 0 &amp;&amp; a[i] != value);
00404     <span class="keywordflow">return</span> i;
00405 }
00406 
00407 END_FASTDB_NAMESPACE
00408 
00409 <span class="preprocessor">#endif</span>
00410 <span class="preprocessor"></span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 2008 for FastDB by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>

⌨️ 快捷键说明

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