stl–vector应用实例
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> odd ;
vector<int> even;
bool _judge_odd( int a)
{
return (a%2==1);
}
void _print()
{
for(int i=0; i<odd.size(); i++)
{
cout<<odd[i];
}
/*使用 迭代器的方法进行
vector<int >iterator :: begin = odd.begin();
vector<int >iterator :: end = odd.end();
while(begin!=end){
遍历
}
*/
for(int i=0; i<even.size(); i++)
{
cout<<even[i];
}
}
int main()
{
int value;
for(int i =0; i<=9; i++)
{
cin>>value;
//输入变量
if(_judge_odd(value))
odd.push_back(value);
else
{
even.push_back(value);
}
}
sort(even.begin(),even.end(),greater<int>());
sort(odd.begin(),odd.end(),less<int>());
_print();
}
一开始使用的代码是sort(odd.begin().odd.end(),less); 那么出错了。
下面给出sort的使用方法 :
#include <iostream> // std::cout
#include <algorithm> // std::sort
#include <vector> // std::vector
//以普通函数的方式实现自定义排序规则
bool mycomp(int i, int j) {
return (i < j);
}
//以函数对象的方式实现自定义排序规则
class mycomp2 {
public:
bool operator() (int i, int j) {
return (i < j);
}
};
int main() {
std::vector<int> myvector{
32, 71, 12, 45, 26, 80, 53, 33 };
//调用第一种语法格式,对 32、71、12、45 进行排序
std::sort(myvector.begin(), myvector.begin() + 4); //(12 32 45 71) 26 80 53 33
//调用第二种语法格式,利用STL标准库提供的其它比较规则(比如 greater<T>)进行排序
std::sort(myvector.begin(), myvector.begin() + 4, std::greater<int>()); //(71 45 32 12) 26 80 53 33
//调用第二种语法格式,通过自定义比较规则进行排序
std::sort(myvector.begin(), myvector.end(), mycomp2());//12 26 32 33 45 53 71 80
//输出 myvector 容器中的元素
for (std::vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it) {
std::cout << *it << ' ';
}
return 0;
}
函数对象 : 如果一个类将()运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象。函数对象是一个对象,但是使用的形式看起来像函数调用,实际上也执行了函数调用,因而得名。
#include <iostream>
using namespace std;
class CAverage
{
public:
double operator()(int a1, int a2, int a3)
{
//重载()运算符
return (double)(a1 + a2 + a3) / 3;
}
};
int main()
{
CAverage average;
cout << average(3, 2, 3);
return 0;
}