STL 算法copy用法
using namespace std;
int arr[7] = { 1,2,3,4,5,6,7 };
vector<int> vec;
vec.resize(7);
//一定要先分配空间,否则会报错
copy(arr, arr + 7, vec.begin());
或者
copy(begin(arr), end(arr), vec.begin());
//将数组中的元素拷贝到vec中
//第一个参数和第二个参数是范围,第三个参数是目的容器的起始点
vector<int> sec;
sec.resize(7);//要先分配空间,否则会报错
copy(vec.begin(), vec.end(), sec.begin());
//利用copy实现arr数组左移
copy(arr + 1, arr + 7, arr);
利用copy向vec中输入元素
待完善…………
copy(istream_iterator<int>(cin), istream_iterator<int>(), back_insert_iterator<vector<int>>(vec));
利用copy将vec中元素输出
copy(vec.begin(), vec.end(), ostream_iterator<int>{cout,","});
equal用法
#include <algorithm>
vector<int> vec={1,2,3,4,5};
vector<int> sec={1,2,3,4,5};
equal(vec.begin(),vec.end(),sec.begin());
//三个元素 若出现不等的返回false 相等返回true
插入迭代器back_inserter 简单用法
using namespace std;
vector<int> v;
auto it = back_inserter(v);//绑定到v中
int a = 0;
for (int i = 0; i < 7; i++)
{
cin >> a;
*it = a;//向v中添加元素,会调用push_back添加到末尾
}
for (auto c : v)//打印查看
{
cout << c << endl;
}
replace 用法
replace(v.begin(),v.end(),2,5);
前两个参数是范围,第三个参数是要找的值
第四个参数是替换第三个参数的值
结果:将 v中的所有2 都替换做 5
replace_copy
vector<int> dest;
replace_copy(v.begin(),v.end(),back_inserter(dest),2,5);
结果:
v 没有改变,将v复制给dest,并且dest中的2 都替换成 5