c++ vector copy函數


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分配空間即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM