📄 array_8h-source.html
字号:
00181 allocated = len;00182 <span class="keywordflow">return</span> *<span class="keyword">this</span>;00183 }00184 <a name="l00189"></a><a class="code" href="classdbArray.html#dbArraya7">00189</a> T <span class="keyword">const</span>& <a class="code" href="classdbArray.html#dbArraya7">last</a>() {00190 assert(len > 0);00191 <span class="keywordflow">return</span> data[len-1];00192 }00193 <a name="l00201"></a><a class="code" href="classdbArray.html#dbArraya8">00201</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>) { 00202 <span class="keywordflow">if</span> (allocated) { 00203 <span class="keyword">delete</span>[] data;00204 }00205 len = size;00206 <span class="keywordflow">if</span> (copy && size != 0) { 00207 data = <span class="keyword">new</span> T[size];00208 memcpy(data, ptr, size); 00209 allocated = size;00210 } <span class="keywordflow">else</span> { 00211 data = (T*)ptr;00212 allocated = 0;00213 }00214 }00215 <a name="l00221"></a><a class="code" href="classdbArray.html#dbArraya9">00221</a> T <span class="keyword">const</span>& <a class="code" href="classdbArray.html#dbArraya9">operator []</a>(size_t index)<span class="keyword"> const </span>{ 00222 assert(index < len);00223 <span class="keywordflow">return</span> data[index];00224 }00225 <a name="l00231"></a><a class="code" href="classdbArray.html#dbArraya10">00231</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) { 00232 assert(index < len);00233 <span class="keywordflow">if</span> (!allocated) { 00234 T* copy = <span class="keyword">new</span> T[len];00235 memcpy(copy, data, len);00236 data = copy;00237 allocated = len;00238 }00239 data[index] = value;00240 }00241 00242 <a name="l00248"></a><a class="code" href="classdbArray.html#dbArraya11">00248</a> T <span class="keyword">const</span>& <a class="code" href="classdbArray.html#dbArraya11">getat</a>(size_t index)<span class="keyword"> const </span>{00249 assert(index < len);00250 <span class="keywordflow">return</span> data[index];00251 }00252 <a name="l00256"></a><a class="code" href="classdbArray.html#dbArraya12">00256</a> <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya12">clear</a>() { 00257 <span class="keywordflow">if</span> (allocated) {00258 <span class="keyword">delete</span>[] data;00259 }00260 data = NULL;00261 len = 0;00262 allocated = 0;00263 }00264 <a name="l00269"></a><a class="code" href="classdbArray.html#dbArraya13">00269</a> <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya13">resize</a>(size_t size) { 00270 <span class="keywordflow">if</span> (size > len && size > allocated) { 00271 T* p = <span class="keyword">new</span> T[size];00272 memcpy(p, data, len);00273 <span class="keywordflow">if</span> (allocated) { 00274 <span class="keyword">delete</span>[] data;00275 }00276 data = p;00277 allocated = size;00278 }00279 len = size;00280 }00281 <a name="l00286"></a><a class="code" href="classdbArray.html#dbArraya14">00286</a> <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya14">append</a>(T <span class="keyword">const</span>& value) { 00287 <a class="code" href="classdbArray.html#dbArraya15">insert</a>(value, len);00288 }00289 <a name="l00295"></a><a class="code" href="classdbArray.html#dbArraya15">00295</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) { 00296 assert(index <= len);00297 <span class="keywordflow">if</span> (len >= allocated) {00298 size_t newSize = len == 0 ? 8 : len*2;00299 T* p = <span class="keyword">new</span> T[newSize];00300 memcpy(p, data, index);00301 p[index] = value;00302 memcpy(p+index+1, data+index, (len-index));00303 <span class="keywordflow">if</span> (allocated) { 00304 <span class="keyword">delete</span>[] data;00305 }00306 data = p;00307 allocated = newSize;00308 } <span class="keywordflow">else</span> { 00309 memmove(data+index+1, data+index, (len-index));00310 data[index] = value;00311 }00312 len += 1;00313 }00314 <a name="l00319"></a><a class="code" href="classdbArray.html#dbArraya16">00319</a> <span class="keywordtype">void</span> <a class="code" href="classdbArray.html#dbArraya16">remove</a>(size_t index) { 00320 assert(index < len);00321 len -= 1;00322 <span class="keywordflow">if</span> (index != len && !allocated) { 00323 T* p = <span class="keyword">new</span> T[len];00324 memcpy(p, data, index);00325 memcpy(p+index, data+index+1, (len-index));00326 allocated = len;00327 data = p;00328 } <span class="keywordflow">else</span> { 00329 memmove(data+index, data+index+1, (len-index));00330 }00331 }00332 <a name="l00337"></a><a class="code" href="classdbArray.html#dbArraya17">00337</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; }00338 <a name="l00343"></a><a class="code" href="classdbArray.html#dbArraya18">00343</a> T* <a class="code" href="classdbArray.html#dbArraya18">update</a>() { 00344 <span class="keywordflow">if</span> (!allocated) {00345 T* copy = <span class="keyword">new</span> T[len];00346 memcpy(copy, data, len);00347 data = copy;00348 allocated = len;00349 }00350 <span class="keywordflow">return</span> data; 00351 }00352 };00353 00354 00360 <span class="keyword">template</span><<span class="keyword">class</span> T>00361 <span class="keywordtype">int</span> index(<a class="code" href="classdbArray.html">dbArray<T></a> <span class="keyword">const</span>& a, T value) {00362 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, n = a.<a class="code" href="classdbAnyArray.html#dbArraya19">length</a>(); i < n; i++) {00363 <span class="keywordflow">if</span> (a[i] == value) {00364 <span class="keywordflow">return</span> i;00365 }00366 }00367 <span class="keywordflow">return</span> -1;00368 }00369 00375 <span class="keyword">template</span><<span class="keyword">class</span> T>00376 <span class="keywordtype">int</span> rindex(<a class="code" href="classdbArray.html">dbArray<T></a> <span class="keyword">const</span>& a, T value) {00377 <span class="keywordtype">int</span> i = a.<a class="code" href="classdbAnyArray.html#dbArraya19">length</a>();00378 <span class="keywordflow">while</span> (--i >= 0 && a[i] != value);00379 <span class="keywordflow">return</span> i;00380 }00381 00382 END_FASTDB_NAMESPACE00383 00384 <span class="preprocessor">#endif</span>00385 <span class="preprocessor"></span></pre></div><hr><address style="align: right;"><small>Generated on Mon Oct 23 13:23:57 2006 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 + -