我的问题是,即使我使用operator []获取矢量内容,矢量也是 总是调用大小函数(根据我的分析工具和时间测量)。 因此,由于我的C ++应用程序非常关键(小于0.1ms),我认为我最好将其转换为数组,但到目前为止我无法弄清楚。 实际的矢量看起来像:
std::vector<std::pair<double*,std::pair<double*,int*>>>
答案 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()
函数占用了可测量的时间。它通常是一个内联函数,它返回一个字段或返回两个指针字段的差异。