我正試圖在C++中學習矢量類。 要做到這一點,我試着從數組轉換爲矢量形式。將數組轉換爲向量的邊界
在陣列形式
int find_recursively(int *a, int low, int high) {
int mid = (low+high)/2;
if(....)
return find_recursively(a,low,mid+1);
else if(...)
return find_recursively(a,mid+1,high);
}
我皈依到矢量形式是這樣的:
int find_recursively(vector<int> a) {
int low = 0;
int high = a.size() - 1;
int mid = (low + high)/2;
if(....) {
vector<int> temp (a.begin(), a.begin() + mid-2);
return find_recursively(temp);
}
else if(...) {
vector<int> temp (a.begin()+mid+1, a.begin()+high);
return find_recursively(temp);
}
}
我測試它,並接近直接給出力。我認爲問題是與邊界,我沒有得到向量的邊界的邏輯。在此先感謝
你能解釋「給力直接關閉嗎?」爲什麼「中期2」?這應該作爲一個函數來實現,需要兩個隨機訪問迭代器,而不是任何特定類型的集合。 – 2013-03-07 20:41:33
考慮'vector temp(a.begin(),a.begin()+ mid-2); '對於a.size()<4的情況。# –
2013-03-07 20:43:30
仔細閱讀代碼,它將不起作用。 – 2013-03-07 20:44:10