Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于typeinfo中的before函数 我正在阅读现代C++设计。以下是取自typeinfo描述的文本片段_C++ - Fatal编程技术网

关于typeinfo中的before函数 我正在阅读现代C++设计。以下是取自typeinfo描述的文本片段

关于typeinfo中的before函数 我正在阅读现代C++设计。以下是取自typeinfo描述的文本片段,c++,C++,在成员函数引入之前 类型_info的排序关系 物体。使用type_info::before,您可以 可以对类型信息执行索引 对象 如果要对type_info对象进行排序,同样必须实际存储 指向键入_info的指针,这次 您必须使用before成员 功能。因此,如果你想 将STL订购的容器与 输入信息,你必须写一点 函子和处理指针 在上面的描述中,对type_info对象进行索引意味着什么,我们如何使用“before”函数实现这一点 另外一个问题是作者的意思是什么,如果我们想使用STL容器的类型_

在成员函数引入之前 类型_info的排序关系 物体。使用type_info::before,您可以 可以对类型信息执行索引 对象

如果要对type_info对象进行排序,同样必须实际存储 指向键入_info的指针,这次 您必须使用before成员 功能。因此,如果你想 将STL订购的容器与 输入信息,你必须写一点 函子和处理指针

在上面的描述中,对type_info对象进行索引意味着什么,我们如何使用“before”函数实现这一点

另外一个问题是作者的意思是什么,如果我们想使用STL容器的类型_info,我们必须编写一个小函子和处理指针

谢谢

如果我们想,作者是什么意思 使用带有类型信息的STL容器,我们 必须写一个小函子和交易 用指针

这一部分意味着,当使用STL排序容器时,您必须告诉容器如何对其包含的元素进行排序,为此,您必须编写一个函子,在内部使用
type\u info::before
type\u info
指针之间进行比较

有序容器需要排序,排序需要比较,比较需要编写一个比较器,该比较器可以是函数,也可以是函子。简单

这里的“索引”是指将其用作有序容器中的键,例如
std::set
std::map
。这需要一个比较函子来对键进行排序。您还需要使用指向
type_info
的指针,而不是对象本身,因为它们是不可复制的。可以这样实现:

struct type_info_before
{
    bool operator()(std::type_info const * a, std::type_info const * b)
    {
        return a->before(*b);
    }
};

typedef std::set<std::type_info const *, type_info_before> type_info_set;
以前的结构类型信息 { 布尔运算符()(std::type_info const*a,std::type_info const*b) { 返回a->before(*b); } }; typedef std::set type_info_set;
或者,如书中所述,您可以将指针封装在一个小类中,并为此重载比较运算符。

问题是,您不知道是否每次都获得相同的type\u info对象,或者是否有多个对象引用相同的类型。因此,您不能只比较type_uinfo对象本身


前()函数必须以具体的实现方式排序,并返回一个正确的排序。

他表示,如果您想使用C++标准容器,使用代码> Type信息> /代码>,那么您必须编写一个小函数,并处理指针。