从vector <pair <double *,pair <double *,int *>&gt;进行C ++转换到数组</pair <double *,pair <double *,int *>

时间:2012-11-23 09:45:09

标签: c++ visual-c++

我的问题是,即使我使用operator []获取矢量内容,矢量也是 总是调用大小函数(根据我的分析工具和时间测量)。 因此,由于我的C ++应用程序非常关键(小于0.1ms),我认为我最好将其转换为数组,但到目前为止我无法弄清楚。 实际的矢量看起来像:

std::vector<std::pair<double*,std::pair<double*,int*>>>

2 个答案:

答案 0 :(得分:6)

由于问题用'visual-c ++'标记,我将假设正在使用此编译器。

C ++标准库的Microsoft实现包括各种检查,以检测产生未定义行为的情况并产生运行时错误。默认情况下会启用这些检查(即使对于发布版本!),但您可以通过将_SECURE_SCL定义为0来禁用它们。有关详细信息,请参阅here (MSDN)here

答案 1 :(得分:3)

您可以将其转换为指向数组第一个元素的指针,如下所示:

pair<double *, pair<double *, int *> > *ar = &v[0];

在C ++ 11中使用v.data()代替&v[0]

无关紧要,我有点怀疑size()函数占用了可测量的时间。它通常是一个内联函数,它返回一个字段或返回两个指针字段的差异。