关于typeinfo中的before函数 我正在阅读现代C++设计。以下是取自typeinfo描述的文本片段
在成员函数引入之前 类型_info的排序关系 物体。使用type_info::before,您可以 可以对类型信息执行索引 对象 如果要对type_info对象进行排序,同样必须实际存储 指向键入_info的指针,这次 您必须使用before成员 功能。因此,如果你想 将STL订购的容器与 输入信息,你必须写一点 函子和处理指针 在上面的描述中,对type_info对象进行索引意味着什么,我们如何使用“before”函数实现这一点 另外一个问题是作者的意思是什么,如果我们想使用STL容器的类型_info,我们必须编写一个小函子和处理指针 谢谢 如果我们想,作者是什么意思 使用带有类型信息的STL容器,我们 必须写一个小函子和交易 用指针 这一部分意味着,当使用STL排序容器时,您必须告诉容器如何对其包含的元素进行排序,为此,您必须编写一个函子,在内部使用关于typeinfo中的before函数 我正在阅读现代C++设计。以下是取自typeinfo描述的文本片段,c++,C++,在成员函数引入之前 类型_info的排序关系 物体。使用type_info::before,您可以 可以对类型信息执行索引 对象 如果要对type_info对象进行排序,同样必须实际存储 指向键入_info的指针,这次 您必须使用before成员 功能。因此,如果你想 将STL订购的容器与 输入信息,你必须写一点 函子和处理指针 在上面的描述中,对type_info对象进行索引意味着什么,我们如何使用“before”函数实现这一点 另外一个问题是作者的意思是什么,如果我们想使用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信息> /代码>,那么您必须编写一个小函数,并处理指针。