zoukankan      html  css  js  c++  java
  • Allocators与Criterion的相同点及区别

    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

  • 相关阅读:
    J2ME 游戏开发之GameCanvas的使用
    J2ME游戏开发之字符串的绘制
    JS数组操作
    什么是LBS?地理位置服务
    js中的this怎么理解
    相机参数
    boost 移植到ARM EP9315
    armlinuxgcc 安装和配置
    小算法 : 水仙花数
    C语言标准库 文件操作
  • 原文地址:https://www.cnblogs.com/ptolemaeus/p/Allocators_Criterion_Same_Verse.html
Copyright © 2011-2022 走看看