相关疑难解决方法(0)

Switch case语句如何实现或在内部工作?

我在某处读到该switch语句使用"二进制搜索"或一些排序技术来精确选择正确的情况,与else-if梯形图相比,这增加了它的性能.

如果我们按顺序给出案例,那么交换机的工作速度会更快吗?是这样吗?你能在这个问题上添加宝贵的建议吗?

我们在这里讨论了相同的问题并计划发布作为一个问题.

c c++ gcc if-statement switch-statement

23
推荐指数
2
解决办法
1万
查看次数

C++:type_info来区分类型

我知道编译器在实现std::type_info函数行为方面有很大的自由度.

我正在考虑使用它来比较对象类型,所以我想确定:

  1. std::type_info::name 必须为两种不同类型返回两个不同的字符串.

  2. 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)
  3. 相同模板类的两种不同的特化被认为是不同的类型.

  4. typedef相同类型的两个不同定义是相同类型.

最后:

  • 由于std::type_info不可复制,我怎么能type_info在某处存储(例如:在a中std::map)?唯一的方法是std::type_info总是分配一个地方(例如:在堆栈上或静态/全局变量上)并使用指向它的指针?

  • 的速度有多快operator==,operator!=以及before对最常见的编译器?我猜他们应该只比较一个值.速度有多快typeid

  • 我有一个类Avirtual 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)

c++ typeid typeinfo

19
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×2

c ×1

gcc ×1

if-statement ×1

switch-statement ×1

typeid ×1

typeinfo ×1