allocarors的部分用法

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

#include <iostream>

using namespace std;

template<typename Ty,

typename Allocator = allocator<Ty> >

class coll {

public:

explicit coll(const size_t size = 10,

const Allocator& a = Allocator())

: alloc(a), sizenum(zize) {}

explicit coll(const size_t size,

const Ty& val,

const Allocator& a = Allocator())

: alloc(a)

{

sizenum = size;

root = alloc.allocate(sizenum);

uninitialized_fill_n(root, sizenum, val);

}

coll(const coll<Ty>& c)

: alloc(c.alloc)

{

sizenum = c.sizenum;

root = alloc.allocate(sizenum);

uninitialized_copy(c.root, c.root+sizenum,

root);

}

virtual ~coll()

{

Ty* pout = root;

for(size_t i = 0; i < sizenum; ++i)

{

alloc.destroy(pout);

++pout;

}

alloc.deallocate(root,sizenum);

}

const coll<Ty>& operator= (const coll<Ty>& c)

{

alloc = c.alloc;

sizenum = c.sizenum;

root = alloc.allocate(sizenum);

uninitialized_copy(c.root, c.root+sizenum,

root);

return c;

}

virtual void output(ostream& strem) const

{

Ty* pout = root;

for(size_t i = 0; i < sizenum; ++i)

{

strem << *pout << " ";

++pout;

}

}

private:

Allocator alloc;

size_t sizenum;

Ty* root;

};

int main(void)

{

coll<int> c(10,100);

coll<int> a(c);

coll<int> b;

b = a;

b.output(cout);

cin.get();

return 0;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有