C++学习【原创】partition函数的应用
(2012-01-28 11:43:13)
标签:
容器函数参数算法偶数奇数it |
分类: Cpp学习 |
partition函数的作用是:将容器根据程序员的要求
划分成两个部分,属于整理算法。函数参数:partition(first,last,compare);//first为容器的首迭代器,last为容器的末迭代器,compare为比较函数(不可略写)。函数返回值:两个集合的分界处。
例题:输入n个数字,把奇数和偶数分别放置在容器的左边与右边。
代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int &elem) {return elem%2;}
int main()
{
vector
<int> V;
int n;
cin>>n;
for(int
i=0;i<n;i++)
{
int t;
cin>>t;
V.push_back(t);
}
vector
<int> ::iterator
it=partition(V.begin(),V.end(),compare);
for(vector
<int> ::iterator
iter=V.begin();iter!=it;iter++)
cout<<*iter<<"
";cout<<endl;
for(;it!=V.end();it++)
cout<<*it<<"
";cout<<endl;
return
0;
}
输入:
5
1 2 3 4 5
一个可能的输出:
1 5 3
4 2
为什么输出不是:
1 3 5
2 4
因为这个整理算法并不是一个稳定的算法,如果要保持原来容器的顺序,可以使用stable_partition。
例题:输入n个数字,把奇数和偶数分别放置在容器的左边与右边。
代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int &elem) {return elem%2;}
int main()
{
}
输入:
5
1 2 3 4 5
一个可能的输出:
1 5 3
4 2
为什么输出不是:
1 3 5
2 4
因为这个整理算法并不是一个稳定的算法,如果要保持原来容器的顺序,可以使用stable_partition。