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