最近學習了vector的使用,下面對vctor進行了模擬實現,
如有不足請指出:
#include
#include
#include
using
namespace std;
template
<
class
t>
class
vector
//大小
size_t size()
const
//容量
size_t capacity()
const
//尾插
void
push_back
(const t& val)
//尾插元素
*_finish = val;
//更新位置
++_finish;
*/insert
(end()
, val);}
void
pop_back()
void
reserve
(size_t n)
//釋放原有空間
delete
_start;
//更新
_start = tmp;
_finish = _start + sz;
_endofstorage = _start + n;}}
t&operator
(size_t pos)
const t&
operator
(size_t pos)
const
//迭代器的實現
typedef t* iterator;
typedef
const t* const_iterator;
//非const型別
iterator begin()
iterator end()
//const 型別,只能讀,不能修改
const_iterator begin()
const
const_iterator end()
const
//resize()
void
resize
(size_t n,
const t& val=t(
))if(n >
size()
)}_finish = _start + n;
}void
insert
(iterator pos,
const t& val)
//增容會導致迭代器失效,更新pos
pos = offset + _start;
//元素移動
iterator it =
end();
while
(it != pos)
//插入資料
*pos = val;
//更新size
++_finish;
}//刪除某一位置的元素
iterator erase
(iterator pos)
--_finish;
return pos;}~
vector()
}private
: t* _start;
//vector的首元素位址
t* _finish;
//最後乙個元素的下一位置
t* _endofstorage;
//當前元素空間的尾位址};
void
print
(const vector<
int>
& vec)
cout << endl;
}int
main()
模擬實現vector
include include using namespace std template class vector 向vector中存入size個元素 vector const t array,size t size start new t size endofstorage start size ...
vector的模擬實現
上一節部落格講述了vector常見介面的使用,今天主要是對vector這些介面進行模擬實現,下面是相關 include include includeusing namespace std namespace ty iterator end citerator cbegin const citera...
STL模擬實現vector
首先給出所需要實現的函式介面和類的封裝 templateclass vector 接下來給出上面介面的具體的實現,但是其中有 型別萃取,因為需要根據不同的資料型別進行不同的賦值方式,從而提高程式的效率。下面給出所有的實現 和我自己的測試 struct truetype struct falsetyp...