| 160 | } |
| 161 | |
| 162 | T* Get(size_t i) { |
| 163 | TValRef& v = V_.Get(i); |
| 164 | |
| 165 | if (Y_UNLIKELY(!v)) { |
| 166 | v.Reset(new (&P_) TVal()); |
| 167 | I_.PushFront(v.Get()); |
| 168 | } |
| 169 | |
| 170 | Y_PREFETCH_WRITE(v.Get(), 1); |
| 171 | |
| 172 | return v.Get(); |
| 173 | } |
| 174 | |
| 175 | void Erase(size_t i) noexcept { |
| 176 | V_.Get(i).Destroy(); |