标题:STL问题
取消只看楼主
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
 问题点数:0 回复次数:0 
STL问题

读STL中的不解问题读STL中的不解问题
template <class T>
class malloc_allocator
{
public:
typedef T value_type;
typedef value_type* pointer;
typedef const value_type* const_pointer;
typedef value_type& reference;
typedef const value_type& const_reference;
typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type;
//问题1:这个红色区域的用的社什么用法,其好处是身么呢


template <class U>
struct rebind { typedef malloc_allocator<U> other; };

malloc_allocator() {}
malloc_allocator(const malloc_allocator&) {}
template <class U>
malloc_allocator(const malloc_allocator<U>&) {}
~malloc_allocator() {}

pointer address(reference x) const { return &x; }
const_pointer address(const_reference x) const {
return x;
}

pointer allocate(size_type n, const_pointer = 0) {
void* p = std::malloc(n * sizeof(T));
if (!p)
throw std::bad_alloc();
return static_cast<pointer>(p);
}

void deallocate(pointer p, size_type) { std::free(p); }

size_type max_size() const {
return static_cast<size_type>(-1) / sizeof(T);
}

void construct(pointer p, const value_type& x) {
new(p) value_type(x);
}
void destroy(pointer p) { p->~value_type(); }

private:
void operator=(const malloc_allocator&);
};

template<> //问题3:既然摸板参数为空,那么写不写template<>有什么不同 ?
class malloc_allocator<void> //问题4:malloc_allocator<void><void> 写与不写不同在那里?
{
typedef void value_type;
typedef void* pointer;
typedef const void* const_pointer;

template <class U>
struct rebind { typedef malloc_allocator<U> other; };
};
以上问题望各位朋友给指点指点!


搜索更多相关主题的帖子: STL 
2007-01-24 20:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-117944-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.146309 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved