2012-11-23 80 views
1

我的问题是,即使使用operator []来获取我的向量内容,矢量是 始终调用size函数(根据我的分析工具和时间测量)。因此,由于我的C++应用程序对时间非常关键(小于0.1ms),所以我认为我最好将它转换为一个数组,但目前为止我无法弄清楚。 实际向量看起来像:从vector <pair <double *,pair <double *,int * >>到数组的C++转换

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

请张贴一些支持代码以便清楚了解情况。 –

+2

你确定你在使用发布版本吗? (调试版本可能检查边界,版本不应该)。你正在使用哪种STL实现? – Philipp

+0

我知道这是因为Debug版本,但我必须使用它。 –

回答

3

可以将其转换为一个指针到一个这样的数组的第一个元素:

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

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

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

+0

我并没有使用C++ 11,因为我的雇主要求现在使用visual studio 2005 –

6

由于问题标记为'visual-C++',因此我将假定正在使用该编译器。

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

+0

它更好,但vector :: size会被调用得太多。我其实已经考虑了Size值 –

相关问题