1 template<class InputIterator, class OutputIterator> 2 OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result) 3 { 4 while (first!=last) { 5 *result = *first; 6 ++result; ++first; 7 } 8 return result;
copy函數作用相當於上面的代碼,剛開始用的時候並不能實現,上代碼
1 int main() 2 { 3 vector<int> v = {1,2,3}; 4 vector<int> cv ; 5 copy(v.begin(),v.end(),cv.begin()); 6 for(auto a: cv) 7 cout<<a; 8 return 0; 9 }
根據函數模版發現,*result = *first; ++result;
原因是cv現在為一個空的容器,所以無法賦值,運行自然出現數組越界的問題。
1 int main() 2 { 3 vector<int> v = {1,2,3}; 4 vector<int> cv(3) ; 5 copy(v.begin(),v.end(),cv.begin()); 6 for(auto a: cv) 7 cout<<a; 8 return 0; 9 }
定義的時候為cv分配空間即可