10.13 标准库定义了名为partition的算法,它接受一个谓词,对容器内容进行划分,使得谓词为true的值会排在容器的前半部分,而使谓词为false的值会排在后半部分。算法返回一个迭代器,指向最后一个使用谓词为true的元素之后的位置。编写程序,接受一个string,返回一个bool值,指出string是否有5个或更多字符。使用此函数划分words。打印出长度大于等于5的元素。
程序如下:
#include<algorithm> #include<vector> #include<iostream> #include<string> using namespace std; bool length(const string &s) { return s.size()>=5; } int main() { vector<string> words={"aaaaa","aaaaaaa","dfdaaaa","fdaa","aaa","dfaaaaa"}; for(auto vv:words) cout<<vv<<" "; cout<<endl; auto l=partition(words.begin(),words.end(),length); auto v=words.begin(); while(v!=l) cout<<*v++<<" "; cout<<endl; return 0; }
运行结果如下:
aaaaa aaaaaaa dfdaaaa fdaa aaa dfaaaaa aaaaa aaaaaaa dfdaaaa dfaaaaa
partition例子
时间: 2024-10-27 13:00:36