rayzor
diff src/stl/vector.h @ 22:5380ff64e83f
minor changes from dos, and line endings cleanup
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Fri, 02 May 2014 14:32:58 +0300 |
parents | d94a69933a71 |
children |
line diff
1.1 --- a/src/stl/vector.h Tue Apr 15 20:52:05 2014 +0300 1.2 +++ b/src/stl/vector.h Fri May 02 14:32:58 2014 +0300 1.3 @@ -1,127 +1,127 @@ 1.4 -/* vi:set ft=cpp: */ 1.5 -#ifndef VECTOR_H_ 1.6 -#define VECTOR_H_ 1.7 - 1.8 -#include <stdlib.h> 1.9 - 1.10 -template <class T> 1.11 -class vector { 1.12 -private: 1.13 - T *data; 1.14 - size_t num_items, max_items; 1.15 - 1.16 -public: 1.17 - vector() 1.18 - { 1.19 - data = 0; 1.20 - num_items = max_items = 0; 1.21 - } 1.22 - 1.23 - vector(const vector &v) 1.24 - { 1.25 - data = 0; 1.26 - num_items = max_items = 0; 1.27 - resize(v.size()); 1.28 - 1.29 - for(size_t i=0; i<v.size(); i++) { 1.30 - data[i] = v.data[i]; 1.31 - } 1.32 - } 1.33 - 1.34 - vector &operator =(const vector &v) 1.35 - { 1.36 - if(&v != this) { 1.37 - clear(); 1.38 - resize(v.size()); 1.39 - 1.40 - for(size_t i=0; i<v.size(); i++) { 1.41 - data[i] = v.data[i]; 1.42 - } 1.43 - } 1.44 - return *this; 1.45 - } 1.46 - 1.47 - ~vector() 1.48 - { 1.49 - clear(); 1.50 - } 1.51 - 1.52 - void clear() 1.53 - { 1.54 - delete [] data; 1.55 - data = 0; 1.56 - max_items = num_items = 0; 1.57 - } 1.58 - 1.59 - bool empty() const 1.60 - { 1.61 - return num_items == 0; 1.62 - } 1.63 - 1.64 - size_t size() const 1.65 - { 1.66 - return num_items; 1.67 - } 1.68 - 1.69 - void resize(size_t nsz) 1.70 - { 1.71 - if(nsz > 0) { 1.72 - T *newdata = new T[nsz]; 1.73 - if(!newdata) return; 1.74 - 1.75 - size_t num = num_items < nsz ? num_items : nsz; 1.76 - for(size_t i=0; i<num; i++) { 1.77 - newdata[i] = data[i]; 1.78 - } 1.79 - 1.80 - delete [] data; 1.81 - data = newdata; 1.82 - max_items = nsz; 1.83 - num_items = num; 1.84 - } else { 1.85 - delete [] data; 1.86 - max_items = num_items = 0; 1.87 - } 1.88 - } 1.89 - 1.90 - void push_back(const T &item) 1.91 - { 1.92 - if(num_items >= max_items) { 1.93 - resize(max_items > 0 ? max_items * 2 : 8); 1.94 - } 1.95 - data[num_items++] = item; 1.96 - } 1.97 - 1.98 - void pop_back() 1.99 - { 1.100 - if(--num_items <= 0) { 1.101 - num_items = 0; 1.102 - } 1.103 - 1.104 - if(num_items < max_items / 3) { 1.105 - resize(max_items / 2); 1.106 - } 1.107 - } 1.108 - 1.109 - T &back() 1.110 - { 1.111 - return data[num_items - 1]; 1.112 - } 1.113 - 1.114 - const T &back() const 1.115 - { 1.116 - return data[num_items - 1]; 1.117 - } 1.118 - 1.119 - T &operator [](int idx) 1.120 - { 1.121 - return data[idx]; 1.122 - } 1.123 - 1.124 - const T &operator [](int idx) const 1.125 - { 1.126 - return data[idx]; 1.127 - } 1.128 -}; 1.129 - 1.130 -#endif // VECTOR_H_ 1.131 +/* vi:set ft=cpp: */ 1.132 +#ifndef VECTOR_H_ 1.133 +#define VECTOR_H_ 1.134 + 1.135 +#include <stdlib.h> 1.136 + 1.137 +template <class T> 1.138 +class vector { 1.139 +private: 1.140 + T *data; 1.141 + size_t num_items, max_items; 1.142 + 1.143 +public: 1.144 + vector() 1.145 + { 1.146 + data = 0; 1.147 + num_items = max_items = 0; 1.148 + } 1.149 + 1.150 + vector(const vector &v) 1.151 + { 1.152 + data = 0; 1.153 + num_items = max_items = 0; 1.154 + resize(v.size()); 1.155 + 1.156 + for(size_t i=0; i<v.size(); i++) { 1.157 + data[i] = v.data[i]; 1.158 + } 1.159 + } 1.160 + 1.161 + vector &operator =(const vector &v) 1.162 + { 1.163 + if(&v != this) { 1.164 + clear(); 1.165 + resize(v.size()); 1.166 + 1.167 + for(size_t i=0; i<v.size(); i++) { 1.168 + data[i] = v.data[i]; 1.169 + } 1.170 + } 1.171 + return *this; 1.172 + } 1.173 + 1.174 + ~vector() 1.175 + { 1.176 + clear(); 1.177 + } 1.178 + 1.179 + void clear() 1.180 + { 1.181 + delete [] data; 1.182 + data = 0; 1.183 + max_items = num_items = 0; 1.184 + } 1.185 + 1.186 + bool empty() const 1.187 + { 1.188 + return num_items == 0; 1.189 + } 1.190 + 1.191 + size_t size() const 1.192 + { 1.193 + return num_items; 1.194 + } 1.195 + 1.196 + void resize(size_t nsz) 1.197 + { 1.198 + if(nsz > 0) { 1.199 + T *newdata = new T[nsz]; 1.200 + if(!newdata) return; 1.201 + 1.202 + size_t num = num_items < nsz ? num_items : nsz; 1.203 + for(size_t i=0; i<num; i++) { 1.204 + newdata[i] = data[i]; 1.205 + } 1.206 + 1.207 + delete [] data; 1.208 + data = newdata; 1.209 + max_items = nsz; 1.210 + num_items = num; 1.211 + } else { 1.212 + delete [] data; 1.213 + max_items = num_items = 0; 1.214 + } 1.215 + } 1.216 + 1.217 + void push_back(const T &item) 1.218 + { 1.219 + if(num_items >= max_items) { 1.220 + resize(max_items > 0 ? max_items * 2 : 8); 1.221 + } 1.222 + data[num_items++] = item; 1.223 + } 1.224 + 1.225 + void pop_back() 1.226 + { 1.227 + if(--num_items <= 0) { 1.228 + num_items = 0; 1.229 + } 1.230 + 1.231 + if(num_items < max_items / 3) { 1.232 + resize(max_items / 2); 1.233 + } 1.234 + } 1.235 + 1.236 + T &back() 1.237 + { 1.238 + return data[num_items - 1]; 1.239 + } 1.240 + 1.241 + const T &back() const 1.242 + { 1.243 + return data[num_items - 1]; 1.244 + } 1.245 + 1.246 + T &operator [](int idx) 1.247 + { 1.248 + return data[idx]; 1.249 + } 1.250 + 1.251 + const T &operator [](int idx) const 1.252 + { 1.253 + return data[idx]; 1.254 + } 1.255 +}; 1.256 + 1.257 +#endif // VECTOR_H_