STL 中的 copy_backward() 会像 copy() 那样复制元素,但是从最后一个元素开始直到第一个元素。copy_backward() 会复制前两个迭代器参数指定的序列。
#include <algorithm>
template<class BidirectionalIterator1, class BidirectionalIterator2>
BidirectionalIterator2 copy_backward ( BidirectionalIterator1 first,
BidirectionalIterator1 last,
BidirectionalIterator2 result);
参数 | 描述 |
---|---|
first | 输入迭代器 |
last | 输入迭代器 |
result | 指出复制到目标区间的具体位置 |
返回一个迭代器,指出已被复制元素区间的起始位置。
使用 STL copy_backward 函数拷贝集合
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
std::cout << "嗨客网(www.haicoder.net)\n" << std::endl;
vector<int> myvector;
vector<int>::iterator iter;
for ( int i = 1; i <= 5; ++i )
{
myvector.push_back( i*10 );
}
myvector.resize( myvector.size()+3 );
copy_backward( myvector.begin(), myvector.begin()+2, myvector.end() );
for ( iter = myvector.begin(); iter != myvector.end(); ++iter )
{
cout << " " << *iter;
}
cout << endl;
myvector.clear();
for (int i = 1; i <= 5; ++i )
{
myvector.push_back( i*10 );
}
copy_backward( myvector.end()-2, myvector.end(), myvector.end()-3 );
for ( iter = myvector.begin(); iter != myvector.end(); ++iter )
{
cout << " " << *iter;
}
cout << endl;
return 0;
}
我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ copy_backward.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了 copy_backward 函数,实现了集合的拷贝。
STL 中的 copy_backward() 会像 copy() 那样复制元素,但是从最后一个元素开始直到第一个元素。copy_backward() 会复制前两个迭代器参数指定的序列。