下面这程序实现的功能是从names中筛选出不大于四个字母的名字,插入到more_names中。
主要是看看copy_if函数和lambda表达式的用法
#include <iostream>
#include <vector>
#include <string>
#include <unordered_set>
#include <algorithm>//copy_if函数定义
using namespace std;
int main()
{
vector<string> names {"A1", "Beth", "Carol", "Dan", "Eve","Fred", "George", "Harry", "Iain", "Joe"};
unordered_set<string> more_names {"Jean", "John"};
size_t max_length{4};
copy_if//这是个函数,但参数太长就分行写了
(
std::begin(names), //第一个参数,表示要复制的序列的首迭代器
std::end(names), //第二个参数,表示要复制的序列的尾迭代器
std::inserter(more_names, std::begin(more_names)), //第三个参数表示复制的目的地
[max_length](const string& s) { return s.length() <= max_length;}//lambda表达式,筛选出不大于4个字母的名字
);
for (auto i : more_names)
{
cout <<i << ' ';
}
cout<<endl;
system("pause");
return 0;
}