谓词

简介: 谓词

谓词


概念:


返回bool类型的仿函数称为谓词

如果operator()接受一个参数,叫做一元谓词

如果operator()接受两个参数,叫做二元谓词


查找数:


find_if(v.begin(),v.end(),谓词名称) //需要头文件#include < algorithm>

返回的是指向对应位置的迭代器,没有找到返回v.end()


一元谓词例子:


#include <iostream>
using namespace std;
#include <string>
#include <vector>
#include <algorithm>
class GreatFive
{
public:
  bool operator()(int val)  //为一元谓词
  {
  return val>5;  //返回比较的结果,就是大于5的数
  } 
};
//仿函数 返回值类型是bool数据类型,成为谓词
//一元谓词
void test()
{
  vector<int> v;
  for(int i=0;i<10;i++)
  {
  v.push_back(i);
  }
  vector<int>::iterator it = find_if(v.begin(),v.end(),GreatFive());  //找到返回指向对应位置的迭代器,没有找到返回v.end()
  if(it!=v.end())   //进行判断
  {
  cout<<"对应的位置为"<<*it<<endl;
  }
  else
  {
  cout<<"没有找到"<<endl;
  }
}
int main()
{
  test();
  system("pause");
  return 0;
}



运行结果:




二元谓词例子

二元谓词可用于容器排序,如vector容器

例子:


#include <iostream>
using namespace std;
#include <string>
#include <vector>
#include <algorithm>
class GreatFive
{
public:
  bool operator()(int val,int val2)  //为二元谓词
  {
  return val>val2;
  }
};
//仿函数 返回值类型是bool数据类型,成为谓词
//二元谓词
void test()
{
  vector<int> v;
  for(int i=0;i<10;i++)
  {
  v.push_back(i);
  }
  sort(v.begin(),v.end(),GreatFive());  //增加一个谓词
  for(vector<int>::iterator it = v.begin();it!=v.end();it++)
  {
  cout<<*it<<" ";
  }
}
int main()
{
  test();
  system("pause");
  return 0;
}



运行结果:



相关文章
|
6月前
|
C++
83 C++ - 谓词
83 C++ - 谓词
17 0
|
1月前
|
算法 C++
C++一元谓词和二元谓词
C++一元谓词和二元谓词
|
4月前
聚合函数、子查询
聚合函数、子查询
|
6月前
|
SQL 关系型数据库 MySQL
第9章_子查询
第9章_子查询
46 0
|
11月前
|
SQL 索引
相关子查询
相关子查询
173 0
|
11月前
|
SQL 关系型数据库 MySQL
第09章_子查询
第09章_子查询
71 0
|
数据库 Python
子查询
子查询
130 0
|
数据库管理
子查询(2)
如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称之为 关联子查询 。相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。
子查询(2)
|
SQL 关系型数据库 MySQL
子查询(1)
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。
子查询(1)
|
SQL 存储 缓存
子查询漫谈
分享子查询的优化技术及分布式数据库中处理子查询的一些心得
1339 0
子查询漫谈