C++ STL算法:copy的使用

binary_search()在C++中找到的用法有两种:

第一种是拷贝容器
A.原型如下:
template<class _InIt,
	class _OutIt> inline
	_OutIt copy(_InIt _First, _InIt _Last,
		_OutIt _Dest)
	{	// copy [_First, _Last) to [_Dest, ...)
	_DEBUG_RANGE_PTR(_First, _Last, _Dest);
	return (_Copy_impl(_Unchecked(_First), _Unchecked(_Last),
		_Dest, _Is_checked(_Dest)));
	}
B. 函数原型:

copy(vector1.begin(), vector1.end(), back_inserter(vector2))

C. 参数说明:
  • vector1.begin():复制的头迭代器
  • vector1.end() :复制的尾迭代器
  • back_inserter():预防出现4996错误提示
  • vector2 :拷贝的迭代器
    D. 函数功能:主要用于迭代器之间的拷贝
第二种拷贝在迭代器指定位置:
A.原型如下:
 #if _ITERATOR_DEBUG_ARRAY_OVERLOADS
template<class _InIt,
	class _OutTy,
	size_t _OutSize> inline
	_OutTy *copy(_InIt _First, _InIt _Last,
		_OutTy (&_Dest)[_OutSize])
	{	// copy [_First, _Last) to [_Dest, ...)
	return (_Unchecked(
		_STD copy(_First, _Last,
			_Array_iterator<_OutTy, _OutSize>(_Dest))));
	}
 #endif /* _ITERATOR_DEBUG_ARRAY_OVERLOADS */
B.函数原型:

copy(vector1.begin(), vector1.end(), vector2[X]);

C.参数说明:
  • vector1.begin():复制的头迭代器
  • vector1.end() :复制的尾迭代器
  • vector2 :拷贝的迭代器
  • X :拷贝在迭代器的哪个位置
D.函数功能:主要用于拷贝迭代器的位置

例子如下:

#include<vector>
#include<iostream>
#include<iterator>//back_inserter所需要的头文件
using namespace std; 
void main() {
	vector<int> vec1;
	vector<int> vec2; 
	vec1 = { 1,2,3,4,5,6,7,8,9,10 };
	vec2.reserve(vec1.size());//存储vec1的大小
	copy(vec1.begin(), vec1.end(), back_inserter(vec2));//进行拷贝
	cout << "vec1.size()     = " << vec1.size() << endl;//输出vec1的大小
	cout << "vec1.capacity() = " << vec1.capacity() << endl;//输出vec1的容量
	cout << "vec1: ";
	for (vector<int>::const_iterator iter = vec1.begin(); iter < vec1.end(); ++iter) {
		cout << *iter << " ";//输出vec1的值
	}
	cout << endl;
	cout << "vec2.size()     = " << vec2.size() << endl;//输出vec2的大小
	cout << "vec2.capacity() = " << vec2.capacity() << endl;//输出vec2的容量
	cout << "vec2: ";
	for (vector<int>::const_iterator iter = vec2.begin(); iter < vec2.end(); ++iter) {
		cout << *iter << ends;//输出vec2的值
	}
	cout << endl;
}

输出如下:
C++ STL算法:copy的使用_第1张图片

你可能感兴趣的:(C++ STL算法:copy的使用)