backport of resize implementation
This commit is contained in:
		
							parent
							
								
									827b9e4be2
								
							
						
					
					
						commit
						a127c705f2
					
				@ -49,6 +49,7 @@ protected:
 | 
			
		||||
        ElementT * mData;
 | 
			
		||||
        size_t mIndex;
 | 
			
		||||
        std::vector<ElementT *> & mBucketList;
 | 
			
		||||
 | 
			
		||||
        inline void setPointerForIndex() {
 | 
			
		||||
            if(bucketSizeC*mBucketList.size() <= mIndex) {
 | 
			
		||||
                mData = DEALLOCATION_VECTOR_NULL_PTR;
 | 
			
		||||
@ -102,7 +103,9 @@ public:
 | 
			
		||||
 | 
			
		||||
    template<typename T2>
 | 
			
		||||
    DeallocatingVectorIterator(const DeallocatingVectorIterator<T2> & r) : mState(r.mState) {}
 | 
			
		||||
 | 
			
		||||
    DeallocatingVectorIterator(size_t idx, std::vector<ElementT *> & input_list) : mState(idx, input_list) {}
 | 
			
		||||
    //DeallocatingVectorIterator(size_t idx, const std::vector<ElementT *> & input_list) : mState(idx, input_list) {}
 | 
			
		||||
    DeallocatingVectorIterator(const DeallocatingVectorIteratorState & r) : mState(r) {}
 | 
			
		||||
 | 
			
		||||
    template<typename T2>
 | 
			
		||||
@ -231,6 +234,28 @@ public:
 | 
			
		||||
        ++mCurrentSize;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inline void reserve(const size_t new_size) const {
 | 
			
		||||
        //don't do anything
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inline void resize(const size_t new_size) {
 | 
			
		||||
        if(new_size > mCurrentSize) {
 | 
			
		||||
            while(capacity() < new_size) {
 | 
			
		||||
                mBucketList.push_back(new ElementT[bucketSizeC]);
 | 
			
		||||
            }
 | 
			
		||||
            mCurrentSize = new_size;
 | 
			
		||||
        }
 | 
			
		||||
        if(new_size < mCurrentSize) {
 | 
			
		||||
            size_t number_of_necessary_buckets = 1+(new_size / bucketSizeC);
 | 
			
		||||
 | 
			
		||||
            for(unsigned i = number_of_necessary_buckets; i < mBucketList.size(); ++i) {
 | 
			
		||||
                delete[] mBucketList[i];
 | 
			
		||||
            }
 | 
			
		||||
            mBucketList.resize(number_of_necessary_buckets);
 | 
			
		||||
            mCurrentSize = new_size;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inline size_t size() const {
 | 
			
		||||
        return mCurrentSize;
 | 
			
		||||
    }
 | 
			
		||||
@ -276,6 +301,4 @@ public:
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif /* DEALLOCATINGVECTOR_H_ */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user