曾經在論壇上看到面試時候被問到stl中vector的實現,想想如果真的要實現vector的原始碼,僅僅是乙個allocator就非常麻煩,一二時分鐘內是搞不定的,面試官出這道題也就是想知道你對stl的實現理解程度。
template
class vector
vector(const vector & rhs):datas(null)
~vector()
const vector & operator=(const vector& rhs)
return *this;
}void resize(int newsize)
void reserve(int newcapacity)
object& operator(int index)
const object& operator(int index) const
bool empty() const
int size() const
int capacity() const
void push_back(const object & x)
void pop_back()
const object& back() const
typedef object* iterator;
typedef const object* const_iterator;
iterator begin()
const_iterator begin() const
iterator end()
const_iterator end() const
enum ;
private:
int thesize;
int thecapacity;
object * datas;
};//下面乙個是csdn上看到的:
#include
#include
using namespace std;
template
class iterator
virtual ~iterator()
}public:
virtual t* begin() = 0;
virtual t* end() = 0;
protected:
int m_nsize;
int m_nlen;
t *m_pdata;
};template
class cmyvector : public iterator
m_nsize = nsize;
m_pdata = new t[m_nsize];
cout<<"cmyvector "<= m_nsize)
memcpy(ptemp, m_pdata, sizeof(t) * m_nlen);
delete m_pdata;
m_pdata = ptemp;
m_nsize = nsize;
}memcpy(m_pdata + m_nlen, &obj, sizeof(obj));
m_nlen++;
return true;
}public:
virtual t* end()
virtual t* begin()
};int main(int argc, char* argv)
cout << "vector data: " << endl;
for (it = vtdata.begin(); it != vtdata.end(); it++)
*/vectorvtdata;
vector::iterator it;
for (int i = 0; i < 30; i++)
cout << "vector data: " << endl;
vtdata[1] = vtdata[0];
for (it = vtdata.begin(); it != vtdata.end(); it++)
cout << endl;
return 0;
**
STL 簡單 vector 的實現
stl 簡單 vector 的實現 我用vs2013寫的程式 github vector版本的 位於 我是照著侯捷老師的 stl原始碼剖析 做的cghstl,現在才看到第三章,覺得這本書的編排非常適合自學。第一章講解空間配置器,這是stl最基礎的部件,沒什麼好說的。第二章講解迭代器,老師舉了單向鍊錶...
C 簡單實現vector
向量是序列容器,表示可以更改大小的陣列。就像陣列一樣,向量對其元素使用連續的儲存位置,這意味著也可以使用指向其元素的常規指標上的偏移量來訪問其元素,並且與陣列一樣高效。但與陣列不同的是,它們的大小可以動態變化,它們的儲存由容器自動處理。在內部,向量使用動態分配的陣列來儲存其元素。可能需要重新分配此陣...
Python 實現簡單 Vector 類
這一節,我們來實現乙個簡單的 vector 類。vector 類有兩個屬性,為 x,y 座標,即對應向量的橫縱座標。首先,實現過載 號的方法def add 及實現兩個向量的加法。具體做法是 將加號兩邊的 vector 物件的 x,y值相加,得到新的 x,y值並且返回乙個新的向量物件。sub 方法實現...