📄 array_8h-source.html
字号:
00179 }00180 <a name="l00185"></a><a class="code" href="classdbArray.html#dbArraya7">00185</a> T <span class="keyword">const</span>& <a class="code" href="classdbArray.html#dbArraya7">last</a>() {00186 assert(len > 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 && 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>& <a class="code" href="classdbArray.html#dbArraya9">operator []</a>(size_t index)<span class="keyword"> const </span>{ 00218 assert(index < 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>& value) { 00228 assert(index < 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>& <a class="code" href="classdbArray.html#dbArraya11">getat</a>(size_t index)<span class="keyword"> const </span>{00245 assert(index < 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 > len && size > 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>& 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>& value, size_t index = 0) { 00292 assert(index <= len);00293 <span class="keywordflow">if</span> (len >= 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 < len);00317 len -= 1;00318 <span class="keywordflow">if</span> (index != len && !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><<span class="keyword">class</span> T>00357 <span class="keywordtype">int</span> index(<a class="code" href="classdbArray.html">dbArray<T></a> <span class="keyword">const</span>& 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 < 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><<span class="keyword">class</span> T>00372 <span class="keywordtype">int</span> rindex(<a class="code" href="classdbArray.html">dbArray<T></a> <span class="keyword">const</span>& 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 >= 0 && 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 + -