C++ primer 第五版 中文版 练习 10.13
题目:标准库定义了名为partition的算法,它接受一个谓词,对容器内容进行划分,使得谓词为true的值会排在容器的前半分部,
而使谓词为false的值会排在后半部分。
算法返回一个迭代器,指向最后一个使谓词为true 的元素之后的位置。
编写函数,接受一个string,返回一个bool值,指出string是否有5个或更多字符。使用此函数划分words。打印出长度大于等于和的元素。
答:
/*
标准库定义了名为partition的算法,它接受一个谓词,对容器内容进行划分,使得谓词为true的值会排在容器的前半分部,
而使谓词为false的值会排在后半部分。
算法返回一个迭代器,指向最后一个使谓词为true 的元素之后的位置。
编写函数,接受一个string,返回一个bool值,指出string是否有5个或更多字符。使用此函数划分words。打印出长度大于等于和的元素。
*/
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
bool stringmorethanfive(const string &s)
{
return s.size() >= 5;
}
void modvectorstring(vector<string> &svect)
{
auto &b=partition(svect.begin(), svect.end(), stringmorethanfive);
svect.erase(b, svect.end());
}
int main()
{
vector<string> svect = { "the", "quick", "red", "fox", "jumps", "over", "the", "slow", "red", "turtle" };
cout << "vector中原始元素内容为:";
for (auto a : svect)
cout << a << " ";
cout << endl;
modvectorstring(svect);
cout << "vector中长度大于等到5的元素内容为:";
for (auto a : svect)
cout << a << " ";
cout << endl;
return 0;
}