我需要將std :: vector轉換爲數組。我嘗試用這個簡單的代碼:如何將矢量轉換爲數組並訪問它
#include <vector>
#include <iostream>
using namespace std;
int main(){
vector<double> v;
double* a = &v[0];
for (int i=0; i<10; i++)
v.push_back(i);
cout<<"Value -V- 9: "<<v[9]<<endl;
cout<<"Value -a- 9: "<<a[9]<<endl; //Gives me segmentation fault error
return 0;
}
我在另一個討論閱讀這樣一個向量轉換成數組,但現在我還需要訪問我的數組的單個元素(這樣編譯器給我的錯誤分段故障)。我在C++中很新,也許這種方法是完全錯誤的。任何人都可以幫我解決這個問題嗎?
您正在'main()'的第二行調用未定義的行爲。您正在請求您的向量中尚不存在的元素的地址。在插入循環後移動第二行*。 – WhozCraig
相當明顯:) txs WhozCraig – zzari
@WhozCraig更糟的是,它不是唯一的UB,事實上我不認爲它是重要的。插入後指向矢量元素的指針會失效,並且可能是導致該問題的原因。 – 2014-01-20 16:17:41