我在某处读到该switch
语句使用"二进制搜索"或一些排序技术来精确选择正确的情况,与else-if梯形图相比,这增加了它的性能.
如果我们按顺序给出案例,那么交换机的工作速度会更快吗?是这样吗?你能在这个问题上添加宝贵的建议吗?
我们在这里讨论了相同的问题并计划发布作为一个问题.
我知道编译器在实现std::type_info
函数行为方面有很大的自由度.
我正在考虑使用它来比较对象类型,所以我想确定:
std::type_info::name
必须为两种不同类型返回两个不同的字符串.
std::type_info::before
必须说,Type1
是前 Type2
异或 Type2
为之前 Type1
.
// like this:
typeid(T1).before( typeid(T2) ) != typeid(T2).before( typeid(T1) )
Run Code Online (Sandbox Code Playgroud)相同模板类的两种不同的特化被认为是不同的类型.
typedef
相同类型的两个不同定义是相同类型.
最后:
由于std::type_info
不可复制,我怎么能type_info
在某处存储(例如:在a中std::map
)?唯一的方法是std::type_info
总是分配一个地方(例如:在堆栈上或静态/全局变量上)并使用指向它的指针?
的速度有多快operator==
,operator!=
以及before
对最常见的编译器?我猜他们应该只比较一个值.速度有多快typeid
?
我有一个类A
有virtual bool operator==( const A& ) const
.由于A
有许多子类(其中一些在编译时是未知的),我会以B
这种方式在任何子类中重载该虚拟运算符:
virtual bool operator==( const A &other ) const {
if( typeid(*this) != typeid(other) ) return …
Run Code Online (Sandbox Code Playgroud)