array_8h-source.html

来自「一个功能强大的内存数据库源代码,c++编写,有详细的注释」· HTML 代码 · 共 282 行 · 第 1/2 页

HTML
282
字号
00173         <font class="keywordflow">if</font> ((len = arr.<a class="code" href="classdbAnyArray.html#dbArray_3_01dbReference_3_01Software_01_4_01_4n2">len</a>) != 0) { 00174             data = <font class="keyword">new</font> T[len];00175             memcpy(data, arr.<a class="code" href="classdbArray.html#dbArrayn0">data</a>, len);00176         }00177         allocated = len;00178         <font class="keywordflow">return</font> *<font class="keyword">this</font>;00179     }00180 <a name="l00185"></a><a class="code" href="classdbArray.html#dbArraya7">00185</a>     T <font class="keyword">const</font>&amp; <a class="code" href="classdbArray.html#dbArraya7">last</a>() {00186         assert(len &gt; 0);00187         <font class="keywordflow">return</font> data[len-1];00188     }00189 <a name="l00197"></a><a class="code" href="classdbArray.html#dbArraya8">00197</a>     <font class="keywordtype">void</font> <a class="code" href="classdbArray.html#dbArraya8">assign</a>(T <font class="keyword">const</font>* ptr, size_t size, <font class="keywordtype">bool</font> copy = <font class="keyword">true</font>) { 00198         <font class="keywordflow">if</font> (allocated) { 00199             <font class="keyword">delete</font>[] data;00200         }00201         len = size;00202         <font class="keywordflow">if</font> (copy &amp;&amp; size != 0) { 00203             data = <font class="keyword">new</font> T[size];00204             memcpy(data, ptr, size);    00205             allocated = size;00206         } <font class="keywordflow">else</font> { 00207             data = (T*)ptr;00208             allocated = 0;00209         }00210     }00211 <a name="l00217"></a><a class="code" href="classdbArray.html#dbArraya9">00217</a>     T <font class="keyword">const</font>&amp; <a class="code" href="classdbArray.html#dbArraya9">operator []</a>(size_t index)<font class="keyword"> const </font>{ 00218         assert(index &lt; len);00219         <font class="keywordflow">return</font> data[index];00220     }00221 <a name="l00227"></a><a class="code" href="classdbArray.html#dbArraya10">00227</a>     <font class="keywordtype">void</font> <a class="code" href="classdbArray.html#dbArraya10">putat</a>(size_t index, T <font class="keyword">const</font>&amp; value) { 00228         assert(index &lt; len);00229         <font class="keywordflow">if</font> (!allocated) { 00230             T* copy = <font class="keyword">new</font> 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 <font class="keyword">const</font>&amp; <a class="code" href="classdbArray.html#dbArraya11">getat</a>(size_t index)<font class="keyword"> const </font>{00245         assert(index &lt; len);00246         <font class="keywordflow">return</font> data[index];00247     }00248 <a name="l00252"></a><a class="code" href="classdbArray.html#dbArraya12">00252</a>     <font class="keywordtype">void</font> <a class="code" href="classdbArray.html#dbArraya12">clear</a>() { 00253         <font class="keywordflow">if</font> (allocated) {00254             <font class="keyword">delete</font>[] 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>     <font class="keywordtype">void</font> <a class="code" href="classdbArray.html#dbArraya13">resize</a>(size_t size) { 00266         <font class="keywordflow">if</font> (size &gt; len &amp;&amp; size &gt; allocated) { 00267             T* p = <font class="keyword">new</font> T[size];00268             memcpy(p, data, len);00269             <font class="keywordflow">if</font> (allocated) { 00270                 <font class="keyword">delete</font>[] 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>     <font class="keywordtype">void</font> <a class="code" href="classdbArray.html#dbArraya14">append</a>(T <font class="keyword">const</font>&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>     <font class="keywordtype">void</font> <a class="code" href="classdbArray.html#dbArraya15">insert</a>(T <font class="keyword">const</font>&amp; value, size_t index = 0) { 00292         assert(index &lt;= len);00293         <font class="keywordflow">if</font> (len &gt;= allocated) {00294             size_t newSize = len == 0 ? 8 : len*2;00295             T* p = <font class="keyword">new</font> T[newSize];00296             memcpy(p, data, index);00297             p[index] = value;00298             memcpy(p+index+1, data+index, (len-index));00299             <font class="keywordflow">if</font> (allocated) { 00300                 <font class="keyword">delete</font>[] data;00301             }00302             data = p;00303             allocated = newSize;00304         } <font class="keywordflow">else</font> { 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>     <font class="keywordtype">void</font> <a class="code" href="classdbArray.html#dbArraya16">remove</a>(size_t index) { 00316         assert(index &lt; len);00317         len -= 1;00318         <font class="keywordflow">if</font> (index != len &amp;&amp; !allocated) { 00319             T* p = <font class="keyword">new</font> T[len];00320             memcpy(p, data, index);00321             memcpy(p+index, data+index+1, (len-index));00322             allocated = len;00323             data = p;00324         } <font class="keywordflow">else</font> { 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 <font class="keyword">const</font>* <a class="code" href="classdbArray.html#dbArraya17">get</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> data; }00334 };00335 00336 00342 <font class="keyword">template</font>&lt;<font class="keyword">class</font> T&gt;00343 <font class="keywordtype">int</font> index(<a class="code" href="classdbArray.html">dbArray&lt;T&gt;</a> <font class="keyword">const</font>&amp; a, T value) {00344     <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0, n = a.<a class="code" href="classdbAnyArray.html#dbArray_3_01dbReference_3_01Software_01_4_01_4a18">length</a>(); i &lt; n; i++) {00345       <font class="keywordflow">if</font> (a[i] == value) {00346           <font class="keywordflow">return</font> i;00347       }00348     }00349     <font class="keywordflow">return</font> -1;00350 }00351 00357 <font class="keyword">template</font>&lt;<font class="keyword">class</font> T&gt;00358 <font class="keywordtype">int</font> rindex(<a class="code" href="classdbArray.html">dbArray&lt;T&gt;</a> <font class="keyword">const</font>&amp; a, T value) {00359     <font class="keywordtype">int</font> i = a.<a class="code" href="classdbAnyArray.html#dbArray_3_01dbReference_3_01Software_01_4_01_4a18">length</a>();00360     <font class="keywordflow">while</font> (--i &gt;= 0 &amp;&amp; a[i] != value);00361     <font class="keywordflow">return</font> i;00362 }00363 00364 00365 <font class="preprocessor">#endif</font>00366 <font class="preprocessor"></font></pre></div><hr><address align="right"><small>Generated on Fri Nov 15 21:06:28 2002 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.15 </small></address></body></html>

⌨️ 快捷键说明

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