copy_n(vs2010版本)
- 引言
这是我学习总结<algorithm>的第八篇,我觉得copy_n比copy在实际应用中更多一些。它指定了要复制的元素的个数。
- 作用
copy_n 作用是将一些连续地址的数据的前n个元素复制到一个新的容器里,并返回容器里的剩下的元素的首向量。
- 原理
template<class InputIterator, class Size, class OutputIterator>
OutputIterator copy_n (InputIterator first, Size n, OutputIterator result)
{
while (n>0) {
*result = *first;
++result; ++first;
--n;
}
return result;
}
- 实验
将数据集合
{10,20,30,40,50,60,70}里的前五个元素复制到容器里,然后输出返回值,返回值为int初始默认值0,也就是容器里的第六个元素向量。
- 代码
#include <iostream> // std::cout
#include <algorithm> // std::copy
#include <vector> // std::vector
int main ()
{
int myints[]={10,20,30,40,50,60,70};
std::vector<int> myvector;
myvector.resize(7); // allocate space for 7 elements
std::cout<<*(std::copy_n ( myints, 5, myvector.begin() ))<<"\n";
std::cout << "myvector contains:";
for (std::vector<int>::iterator it = myvector.begin(); it!=myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
system("pause");
return 0;
}
template<class InputIterator, class Size, class OutputIterator>
OutputIterator copy_n (InputIterator first, Size n, OutputIterator result)
{
while (n>0) {
*result = *first;
++result; ++first;
--n;
}
return result;
}
#include <iostream> // std::cout
#include <algorithm> // std::copy
#include <vector> // std::vector
int main ()
{
int myints[]={10,20,30,40,50,60,70};
std::vector<int> myvector;
myvector.resize(7); // allocate space for 7 elements
std::cout<<*(std::copy_n ( myints, 5, myvector.begin() ))<<"\n";
std::cout << "myvector contains:";
for (std::vector<int>::iterator it = myvector.begin(); it!=myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
system("pause");
return 0;
}