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

📄 array_8h-source.html

📁 FastDb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00179     }00180 <a name="l00185"></a><a class="code" href="classdbArray.html#dbArraya7">00185</a>     T <span class="keyword">const</span>&amp; <a class="code" href="classdbArray.html#dbArraya7">last</a>() {00186         assert(len &gt; 0);00187         <span class="keywordflow">return</span> data[len-1];00188     }00189 <a name="l00197"></a><a class="code" href="classdbArray.html#dbArraya8">00197</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>) { 00198         <span class="keywordflow">if</span> (allocated) { 00199             <span class="keyword">delete</span>[] data;00200         }00201         len = size;00202         <span class="keywordflow">if</span> (copy &amp;&amp; size != 0) { 00203             data = <span class="keyword">new</span> T[size];00204             memcpy(data, ptr, size);    00205             allocated = size;00206         } <span class="keywordflow">else</span> { 00207             data = (T*)ptr;00208             allocated = 0;00209         }00210     }00211 <a name="l00217"></a><a class="code" href="classdbArray.html#dbArraya9">00217</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>{ 00218         assert(index &lt; len);00219         <span class="keywordflow">return</span> data[index];00220     }00221 <a name="l00227"></a><a class="code" href="classdbArray.html#dbArraya10">00227</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) { 00228         assert(index &lt; len);00229         <span class="keywordflow">if</span> (!allocated) { 00230             T* copy = <span class="keyword">new</span> T[len];00231             memcpy(copy, data, len);00232             data = copy;00233             allocated = len;00234         }00235         data[index] = value;00236     }00237 00238     <a name="l00244"></a><a class="code" href="classdbArray.html#dbArraya11">00244</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>{00245         assert(index &lt; len);00246         <span class="keywordflow">return</span> data[index];00247     }00248 <a name="l00252"></a><a class="code" href="classdbArray.html#dbArraya12">00252</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya12">clear</a>() { 00253         <span class="keywordflow">if</span> (allocated) {00254             <span class="keyword">delete</span>[] data;00255         }00256         data = NULL;00257         len = 0;00258         allocated = 0;00259     }00260 <a name="l00265"></a><a class="code" href="classdbArray.html#dbArraya13">00265</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya13">resize</a>(size_t size) { 00266         <span class="keywordflow">if</span> (size &gt; len &amp;&amp; size &gt; allocated) { 00267             T* p = <span class="keyword">new</span> T[size];00268             memcpy(p, data, len);00269             <span class="keywordflow">if</span> (allocated) { 00270                 <span class="keyword">delete</span>[] data;00271             }00272             data = p;00273             allocated = size;00274         }00275         len = size;00276     }00277 <a name="l00282"></a><a class="code" href="classdbArray.html#dbArraya14">00282</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya14">append</a>(T <span class="keyword">const</span>&amp; value) { 00283         <a class="code" href="classdbArray.html#dbArraya15">insert</a>(value, len);00284     }00285 <a name="l00291"></a><a class="code" href="classdbArray.html#dbArraya15">00291</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya15">insert</a>(T <span class="keyword">const</span>&amp; value, size_t index = 0) { 00292         assert(index &lt;= len);00293         <span class="keywordflow">if</span> (len &gt;= allocated) {00294             size_t newSize = len == 0 ? 8 : len*2;00295             T* p = <span class="keyword">new</span> T[newSize];00296             memcpy(p, data, index);00297             p[index] = value;00298             memcpy(p+index+1, data+index, (len-index));00299             <span class="keywordflow">if</span> (allocated) { 00300                 <span class="keyword">delete</span>[] data;00301             }00302             data = p;00303             allocated = newSize;00304         } <span class="keywordflow">else</span> { 00305             memmove(data+index+1, data+index, (len-index));00306             data[index] = value;00307         }00308         len += 1;00309     }00310     <a name="l00315"></a><a class="code" href="classdbArray.html#dbArraya16">00315</a>     <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya16">remove</a>(size_t index) { 00316         assert(index &lt; len);00317         len -= 1;00318         <span class="keywordflow">if</span> (index != len &amp;&amp; !allocated) { 00319             T* p = <span class="keyword">new</span> T[len];00320             memcpy(p, data, index);00321             memcpy(p+index, data+index+1, (len-index));00322             allocated = len;00323             data = p;00324         } <span class="keywordflow">else</span> { 00325             memmove(data+index, data+index+1, (len-index));00326         }00327     }00328 <a name="l00333"></a><a class="code" href="classdbArray.html#dbArraya17">00333</a>     T <span class="keyword">const</span>* <a class="code" href="classdbArray.html#dbArraya17">get</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data; }00334 <a name="l00339"></a><a class="code" href="classdbArray.html#dbArraya18">00339</a>     T* <a class="code" href="classdbArray.html#dbArraya18">update</a>() { 00340         <span class="keywordflow">if</span> (!allocated) {00341             T* copy = <span class="keyword">new</span> T[len];00342             memcpy(copy, data, len);00343             data = copy;00344             allocated = len;00345         }00346         <span class="keywordflow">return</span> data; 00347     }00348 };00349 00350 00356 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;00357 <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) {00358     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, n = a.<a class="code" href="classdbAnyArray.html#dbArray_3_01dbReference_3_01Software_01_4_01_4a19">length</a>(); i &lt; n; i++) {00359       <span class="keywordflow">if</span> (a[i] == value) {00360           <span class="keywordflow">return</span> i;00361       }00362     }00363     <span class="keywordflow">return</span> -1;00364 }00365 00371 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;00372 <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) {00373     <span class="keywordtype">int</span> i = a.<a class="code" href="classdbAnyArray.html#dbArray_3_01dbReference_3_01Software_01_4_01_4a19">length</a>();00374     <span class="keywordflow">while</span> (--i &gt;= 0 &amp;&amp; a[i] != value);00375     <span class="keywordflow">return</span> i;00376 }00377 00378 00379 <span class="preprocessor">#endif</span>00380 <span class="preprocessor"></span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Feb 12 13:04:47 2004 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.5 </small></address></body></html>

⌨️ 快捷键说明

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