2012-11-23 118 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值 –

相關問題