#include <iostream>
#include <vector>
#include<numeric>
#include <string>
#include <iterator>
#include <algorithm>
using namespace std;
void main()
{
vector<int> vec1;
vector<string> vec2;
vector<int> vec3;
for (int i = 0; i < 10; i++)
{
vec1.push_back(i + 1);
vec3.push_back(i);
}
//accumulate用来求和,第一个参数为起点,第二个参数为终点,第三个参数为起始和
int sum = accumulate(vec1.begin(),vec1.end(),0);
cout << sum << endl;
vec2.push_back("a");
vec2.push_back("b");
vec2.push_back("c");
vec2.push_back("d");
//注意此处第三个参数需显示的创建string
string str = accumulate(vec2.begin(), vec2.end(), string(""));
cout << str << endl;
//判断vec1和vec2是否相等
bool flag = equal(vec1.cbegin(), vec1.cend(), vec3.cbegin());
cout << flag << endl;
//将每个元素都置为0(两个迭代器)
fill(vec1.begin(), vec1.end(), 0);
for (int i = 0; i < vec1.size(); i++)
{
cout << vec1[i] << " ";
}
cout << endl;
vector<int> vec4;//定义一个空的容器
//back_inserter创建一个插入迭代器,向容器插入指定数量元素
fill_n(back_inserter(vec4), 10, 1);//fill_n可以接受一个迭代器和指定计数值
for (int i = 0; i < vec4.size(); i++)
{
cout << vec4[i] << " ";
}
cout << endl;
//拷贝算法,此算法接收三个迭代器,前两个表示输入范围,第三个表示目的序列的起始位置
copy(vec3.begin(), vec3.end(), vec4.begin());
for (int i = 0; i < vec4.size(); i++)
{
cout << vec4[i] << " ";
}
cout << endl;
//替代,前两个参数表示搜索范围,第三个参数为要搜索的值,第四个参数为新值
replace(vec4.begin(), vec4.end(), 5, 0);//将5替换为0
for (int i = 0; i < vec4.size(); i++)
{
cout << vec4[i] << " ";
}
cout << endl;
//将一个容器中的元素拷贝到另一容器中,并替换指定的值
int arrInt[10] = {0,1,2,3,4,5,6,7,8,9};
vector<int> vec5;//未初始化大小
replace_copy(arrInt, arrInt+10, back_inserter(vec5), 9, 0);//将attInt中的9替换为0,并将全部元素拷贝到vec5
for (int i = 0; i < vec5.size(); i++)
{
cout << vec5[i] << " ";
}
cout << endl;
system("pause");
}
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
void printV(vector<int> &vec)
{
for (vector<int>::iterator it = vec.begin();it!=vec.end();it++)
{
cout << *it << " ";
}
}
bool Greate_Equal_3(int &n)
{
return (n >= 3);
}
void replace_if_()
{
vector<int> vec1;
vec1.push_back(1);
vec1.push_back(3);
vec1.push_back(5);
vec1.push_back(7);
//replace_if:将容器内满足条件的元素替换(所有>=3的元素替换为1)
replace_if(vec1.begin(), vec1.end(), Greate_Equal_3, 1);
printV(vec1);
cout << endl;
}
void swap_()
{
vector<int> vec1;
vec1.push_back(1);
vec1.push_back(3);
vec1.push_back(5);
vector<int> vec2;
vec2.push_back(2);
vec2.push_back(4);
vec2.push_back(6);
//swap:替换两个容器内的元素
swap(vec1, vec2);
printV(vec1);
cout << endl;
}
void main()
{
replace_if_();
swap_();
system("pause");
}