| 18 | class FloatVectorPool { |
| 19 | public: |
| 20 | fl::vector<float> acquire(fl::size capacity) { |
| 21 | for (fl::size i = 0; i < mPool.size(); ++i) { |
| 22 | if (mPool[i].capacity() >= capacity) { |
| 23 | fl::vector<float> v = fl::move(mPool[i]); |
| 24 | mPool[i] = fl::move(mPool.back()); |
| 25 | mPool.pop_back(); |
| 26 | v.clear(); |
| 27 | return v; |
| 28 | } |
| 29 | } |
| 30 | fl::vector<float> v; |
| 31 | v.reserve(capacity); |
| 32 | return v; |
| 33 | } |
| 34 | |
| 35 | void release(fl::vector<float>&& v) { |
| 36 | if (v.capacity() > 0 && mPool.size() < kMaxPoolSize) { |