allocator_is_always_equal应用实例
在C++标准库中,allocator是一个模板类,用于管理动态内存的分配和释放。其中,allocator_is_always_equal是一个名为traits class的特殊类,用于测试STL容器分配器是否支持等同性复制操作。本文将介绍allocator_is_always_equal的具体应用实例。
在C++11之前,在STL中使用任何容器都要求其分配器支持等同性复制操作。因为容器之间需要互相拷贝元素,如果分配器不支持等同性复制操作,这样的操作就会失败。然而,有些分配器无法处理等同性复制操作,例如Windows API中的HeapAlloc,这使得在Windows操作系统下使用STL容器非常困难。
C++11引入了allocator_is_always_equal类,允许容器不依赖于分配器的等同性复制操作。当一个分配器支持等同性复制操作时,allocator_is_always_equal的值为true;反之,其值为false。因此,使用allocator_is_always_equal可以使容器只需假定它们的分配器支持等同性复制操作,并忽略其他情况。
以下是一个基于vector容器的示例程序,演示如何使用allocator_is_always_equal来测试分配器的支持性: