Allocators与Criterion的相同点及区别
2016-01-06 10:53
351 查看
C++98:
1、相同点:
Allocators having the same type were assumed to be equal so that memory allocated by one
allocator could be deallocated by another allocator of the same type.
It was not possible to change the memory resource at runtime.
Allocators had limitations in the ability to hold a state, such as bookkeeping information or
information about where to allocate next.
2、区别:
Allocators were not swapped when the containers were swapped.
Allocators were not handled consistently, because copy constructors copied allocators, whereas
the assignment operator did not. Thus, the copy constructor did not have the same effect as
calling the default constructor and the assignment operator afterward.
C++11:
A couple of proposed changes to C++11 are intended to solve all these issues. For example:
• Library components are no longer allowed to assume that all allocators of a specific type compare
equal.
• Allocator traits solve some of the problems created by stateful allocators.
• A scoped allocator adapter provides the ability used to propagate the allocator from the container
to the contained elements.
These enhancements provide the tools to build a polymorphic allocator, which allows to compare or
assign two containers with different allocator types that are derived from a common allocator type
the container uses. However, due to time constraints, a standard polymorphic allocator is not part of
C++11.
而STL Container在create时可以指定criterion
copy和assign的时候许指定Criterion,否则使用默认项
swap的时候尽可能交换sorting criterion, equivalence predicate,and hash function object
1、相同点:
Allocators having the same type were assumed to be equal so that memory allocated by one
allocator could be deallocated by another allocator of the same type.
It was not possible to change the memory resource at runtime.
Allocators had limitations in the ability to hold a state, such as bookkeeping information or
information about where to allocate next.
2、区别:
Allocators were not swapped when the containers were swapped.
Allocators were not handled consistently, because copy constructors copied allocators, whereas
the assignment operator did not. Thus, the copy constructor did not have the same effect as
calling the default constructor and the assignment operator afterward.
C++11:
A couple of proposed changes to C++11 are intended to solve all these issues. For example:
• Library components are no longer allowed to assume that all allocators of a specific type compare
equal.
• Allocator traits solve some of the problems created by stateful allocators.
• A scoped allocator adapter provides the ability used to propagate the allocator from the container
to the contained elements.
These enhancements provide the tools to build a polymorphic allocator, which allows to compare or
assign two containers with different allocator types that are derived from a common allocator type
the container uses. However, due to time constraints, a standard polymorphic allocator is not part of
C++11.
而STL Container在create时可以指定criterion
copy和assign的时候许指定Criterion,否则使用默认项
swap的时候尽可能交换sorting criterion, equivalence predicate,and hash function object
相关文章推荐
- MySQL做为手动开启事务用法
- 词干提取和词形还原
- xcode扩展插件使用
- 封装的自定义dialog,文本编辑,EditText,按需更改
- 十进制转换成其他进制
- android service
- mysqldump常用参数
- 工作学习小记--svn 使用
- git修改远程仓库地址
- java中的基本数据类型?各占多少位?多少字节?取值范围?
- 读书笔记--《机器人时代》
- spring security在spring mvc的action中获取登录人信息
- Docker 2015年度回顾
- 多sink
- Windows API Chapter1
- jquery easyui datagrid js获取记录数 页数 当前页
- 性能测试如何定位瓶颈
- C# 杨辉三角形算法
- ThreadLocal
- 制作LiveCD