我在某处读到该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)