zoukankan      html  css  js  c++  java
  • 条目二十《为包含指针的关联容器指定比较类型》

    条目二十《为包含指针的关联容器指定比较类型》

    stl中的关联容器是一种动态数据结构,其数据存储方式是以内存节点方式的数据结构,具体来说一般是一种平衡二叉树(红黑树),在向关联容器插入元素的时候,容器内部为了保持树的平衡性,会自动(插入函数有自我调整代码)的调整当前插入元素的存储位置,达到动态平衡的目的。

    所以在关联容器存储的是指针的时候,如果是采用默认的比较对象,那么由于是指针,那么整个容器的元素肯定是按照插入元素的指针来排列,然而由于是节点存储方式,分配的每个节点的地址的数值大小是定的,所以会造成容器内部的元素排序方式是不能控制。

    这种情况下对容器的操作,比如set容器,是按照键值来排序的(对于非指针元素),但如果是存储指针类型,对set的操作,比如打印,会发现元素的打印结果是没有按照插入的顺序来的。

    所以,在关联容器存储的是指针类型时,需要我们自己指定对应的比较对象,是的,提供的应该是一个函数对象,因为容器模板的参数接受的是类型,并非是一般的函数哦。

    总结下:

    在使用关联容器时,如果存储的是指针,又想按照指针指向的对象的某个字段顺序存储,需要自己实现比较函数对象。作为第二个参数传入构造。

  • 相关阅读:
    换肤动画
    手风琴动画图
    Ajax传值原理.aspx文档
    三层框架中单表的增删改查
    用ajax传JSON数据
    利用ajax进行post传值,登录QQ和密码代码
    ado.net增删改查及存储过程
    常用的SQL语句
    金融
    写你的简历应该注意什么
  • 原文地址:https://www.cnblogs.com/liangjf/p/10275031.html
Copyright © 2011-2022 走看看