【问题标题】:2d STL vector typeid二维 STL 向量类型标识
【发布时间】:2011-02-18 18:15:14
【问题描述】:

我有各种二维向量,我想在运行时查询它们的不同类型。

这似乎在“空”向量上是可能的,例如:

vector<vector<float> > myVec;
cout << (typeid(myVec[0][0]).name() << endl;

上面返回“float”,虽然我没有推回任何元素,所以我期待一个异常。

在没有任何边界检查或迭代器的情况下访问[0][0] 的内存时,它成功了吗?或者向量在声明时是否分配了一些基线存储?

【问题讨论】:

    标签: c++ vector typeid


    【解决方案1】:

    由于float 没有任何虚方法,编译器可以静态评估typeid(some_float_object) 而无需查看实际表达式,只需查看其静态类型。根据 C++ 标准(当前 C++0x 草案)第 5.2.8 节,甚至不允许编译器计算表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 2020-06-10
      • 1970-01-01
      相关资源
      最近更新 更多