- 论坛徽章:
- 0
|
然后你使用SpecificHeapAllocator来把容器的元素集合在一起:
vector<int, SpecificHeapAllocator<int, Heap1 > > v; // 把v和s的元素
set<int, SpecificHeapAllocator<int Heap1 > > s; // 放进Heap1
list<Widget,
SpecificHeapAllocator<Widget, Heap2> > L; // 把L和m的元素
map<int, string, less<int>, // 放进Heap2
SpecificHeapAllocator<pair<const int, string>,
Heap2> > m;
在这个例子里,很重要的一点是Heap1和Heap2是类型而不是对象。STL为用不同的分配器对象初始化相同类
型的不同STL容器提供了语法,但是我将不让你看它是什么。那是因为如果Heap1和Heap2是对象而不是类
型,那么它们将是不等价的分配器,那就违反了分配器的等价约束,在条款10有详细说明。
因为这些例子演示的,分配器在许多情况里有用。只要你遵循相同类型的所有分配器都一定等价的限制条
件,你将毫不费力地使用自定义分配器来控制一般内存管理策略,群集关系和使用共享内存以及其他特殊的
堆。 |
|