簡體   English   中英

向量類C ++的pop_back和擦除

[英]pop_back and erase for a vector class C++

我正在嘗試為我的向量類編寫pop_back和擦除成員函數。 但是我意識到我不能使用刪除。 關於如何擺脫元素的任何建議?

template <class T>
class Vector{
private:
int current_size, capacity;
T* arr;

public:

Vector();
unsigned int size();
void grow();
void push_back(const T& elt);
void pop_back();
T& at(int pos);
T& front();
T& back();
bool empty();
void insert (const T&elt, int pos);
void erase(int pos);
Vector<T>& operator=(const Vector& v);
T& operator[](int n);

};

template <class T>
void Vector<T>::pop_back(){
if(!empty()){
    delete arr[current_size-1];
    current_size--;
    }
 }

template <class T>
void Vector<T>::erase(int pos){
if(!empty() && pos>=0 && pos<current_size) {
    for (int i=pos; i<(current_size-1); i++){
        arr[i]=arr[i+1];
    }
    delete arr[current_size-1];
    current_size--;
 }
}

要在未分配有常規new上調用析構函數,您將執行以下操作:

arr[current_size-1].~T();

請記住,在數組中分配對象時,您可能還需要確保對它們也調用new放置,否則您將要處理未初始化的對象。 例如:

new (&arr[some_index]) T();

(您需要包括頭文件<new>來執行此操作)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM