stl vector中成員物件的刪除

2021-08-20 00:19:30 字數 911 閱讀 2177

我呼叫vector中erase方法,刪除其成員,遇見乙個詭異的現象,似乎它只能刪除偶數序號索引的資料。

**入下,

#include

#include

#include

#include

class client

~client()

int32_t getindex()

private:

int32_t m_index;

};static

int num=10;

int main()

client *ptr=nullptr;

for(auto it=m_clients.begin();it!=m_clients.end();it++)

// m_clients.clear();

ptr=m_clients[3];

if(ptr==nullptr)

printf("just for some test%d\n",m_clients.size());

}

stl_vecotr.h中的erase的實現如下

if (__position + 1 != end())

copy(__position + 1, _m_finish, __position);

--_m_finish;

destroy(_m_finish);

return __position;

} 這是因為,erase方法的中的物件拷貝引起的。就是刪除了當前位置的元素,但是下個元素被複製到當前位置position。這就導致上述現象,vecto中的元素只被刪除可一半。

需要全部清除vector中的元素的時候,可以這樣:

或者不呼叫erase:

m_clients.clear();

STL vector中的元素刪除

刪除vector中的元素,最容易的方法就是使用vector的erase 函式。vector vec for vector iterator iter vec.begin iter vec.end 如果要清空vector中的元素,可以使用erase 迴圈刪除,也可以用clear 函式。for vect...

STL vector中的元素刪除

刪除vector中的元素,最容易的方法就是使用vector的erase 函式。vector vec for vector iterator iter vec.begin iter vec.end 如果要清空vector中的元素,可以使用erase 迴圈刪除,也可以用clear 函式。for vect...

PHP物件導向 物件中成員的訪問

ps 參考 細說php php物件導向 物件中成員的訪問 宣告乙個類 class person function run 例項化類中的物件 person1 new person person2 new person person3 new person 給 persion1物件中的屬性賦初值 per...