c 中vector的使用和模擬實現

2022-10-03 15:42:20 字數 1724 閱讀 7241

1、插入資料

void push_back(const t& x)

在當前vector尾部插入x,如果容量不夠擴大二倍。

iterator insert(iterator pos, const t& x)

在pos位置插入元素x

2、容量相關

size_t capacity()

返回當前vector的容量(size+剩餘容量)

size_t size()

返回當前vector的元素個數

void resize(size_t n, const t& val = t())

改變當前vector的size,如果n>size則大於部分初始值為val。(capacity的大小始終保持不變)

void reserve(size_t n)

改變當前vector的capacity,如果n

3、刪除資料

void pop_back()

如果vector不為空,刪除當前vector的最後乙個元素

iterator erase(iterator pos)

刪除pos位置的元素

4、運算子過載

t& operator(size_t pos)

運算子過載,支援使用下標訪問vector

#include

#include

#include

using namespace std;

namespace myvector

iterator end()

//預設建構函式

vector()

:start(nullptr)mgramtd

, finish(nullptr)

, end_of_storage(nullptr)

{}//容量

size_t capacity()

size_t size()

void reserve(size_t n)

}void resize(size_t n, const t& val = t())

}} //檢查空間

void check_capacity()

}t& operator(size_t pos)

//插入

void pushmgramtd_back(const t& x)

iterator insert(iterator pos, const t& x)

//插入資料

*pos = x;

finish++;

return pos;

} //刪除資料

void pop_back()

iterator erase(iterator pos)

--finish;

return pos;

} //析構函式

~vector()

private:

iterator start;

iterator finish;

iterator end_of_storage;

};}void test1()

void test2()

1、在vector的介面中,使用insert插入資料時可能導致迭代器失效,具體如下

2、刪除操作導致迭代器失效

3、迭代器失效的解決辦法

1)在vector中,解決迭代器失效的辦法是在插入、刪除等可能會導致迭代器失效的地方,返回新的迭代器來解決迭代器失效。

vector的模擬實現

上一節部落格講述了vector常見介面的使用,今天主要是對vector這些介面進行模擬實現,下面是相關 include include includeusing namespace std namespace ty iterator end citerator cbegin const citera...

vector的模擬實現

最近學習了vector的使用,下面對vctor進行了模擬實現,如有不足請指出 include include include using namespace std template class t class vector 大小 size t size const 容量 size t capaci...

類模板模擬實現STL中Vector

vector 向量 c 中的一種資料結構,確切的說是乙個類.它相當於乙個動態的陣列,當程式設計師無法知道自己需要的陣列的規模多大時,用其來解決問題可以達到最大節約空間的目的.用法 1.變數宣告 例 宣告乙個int向量以替代一維的陣列 vector a 等於宣告了乙個int陣列a,大小沒有指定,可以動...