游戏开发网站开发,wordpress博客分类,在线制作书封网站,有没有专门做飞卢小说盗版的网站任何定义了函数调用操作符的对象都是函数对象。C 支持创建、操作新的函数对象#xff0c;同时也提供了许多内置的函数对象。 运算符函数对象
C 针对常用的算术和逻辑运算定义了很多函数对象#xff1a; 比较
实现 x y 的函数对象
std::equal_to template class T 支持创建、操作新的函数对象同时也提供了许多内置的函数对象。 运算符函数对象
C 针对常用的算术和逻辑运算定义了很多函数对象 比较
实现 x y 的函数对象
std::equal_to template class T struct equal_to; (C14 前) template class T void struct equal_to; (C14 起)
进行比较的函数对象。调用类型 T 上的 operator 除非特化。
进行比较的函数对象。调用类型 T 上的 operator 除非特化。
特化 标准库提供 std::equal_to 在未指定 T 时的特化这使得参数类型和返回类型留待推导。 equal_tovoid 实现 x y 并推导参数和返回类型的函数对象 (类模板特化)(C14 起) 成员类型 类型定义result_type(C17 中弃用)boolfirst_argument_type(C17 中弃用)Tsecond_argument_type(C17 中弃用)T(C20 前) 成员函数 operator() 检查参数是否相等 (公开成员函数) std::equal_to::operator() bool operator()( const T lhs, const T rhs ) const; (C14 前) constexpr bool operator()( const T lhs, const T rhs ) const; (C14 起)
检查 lhs 是否等于 rhs 。
参数
lhs, rhs-要比较的值
返回值
若 lhs rhs 则为 true 否则为 false 。
异常
无 可能的实现
constexpr bool operator()(const T lhs, const T rhs) const
{return lhs rhs;
} 调用示例
#include iostream
#include functionalstruct Cell
{int x;int y;Cell() default;Cell(int a, int b): x(a), y(b) {}Cell(const Cell cell){x cell.x;y cell.y;}bool operator (const Cell cell) const{if (x cell.x){return y cell.y;}else{return x cell.x;}}Cell operator(const Cell cell){x cell.x;y cell.y;return *this;}Cell operator(const Cell cell){x cell.x;y cell.y;return *this;}Cell operator*(int n){x * n;y * n;return *this;}Cell operator(){x 1;y 1;return *this;}friend Cell operator (const Cell cell1, const Cell cell2){Cell cell cell1;cell cell2;return cell;}friend Cell operator *(const Cell cell1, const Cell cell2){Cell cell {cell1.x * cell2.x, cell1.y * cell2.y};return cell;}friend Cell operator /(const Cell cell1, const Cell cell2){Cell cell {cell1.x / cell2.x, cell1.y / cell2.y};return cell;}friend Cell operator %(const Cell cell1, const Cell cell2){Cell cell {cell1.x % cell2.x, cell1.y % cell2.y};return cell;}friend bool operator (const Cell cell1, const Cell cell2){return cell1.x cell2.x cell1.y cell2.y;}
};std::ostream operator(std::ostream os, const Cell cell)
{os { cell.x , cell.y };return os;
}int main()
{std::cout std::boolalpha;int *ptr nullptr;std::cout std::equal_toint*()(1023, 1024): std::equal_toint*()(ptr, nullptr) std::endl;std::cout std::equal_tochar()(50, 2): std::equal_tochar()(50, 2) std::endl;std::cout std::equal_tochar()(a, 97): std::equal_tochar()(a, 97) std::endl;std::cout std::equal_toint()(1023, 1024): std::equal_toint()(1023, 1024) std::endl;std::cout std::equal_tolong()(1023, 1024): std::equal_tolong()(1023, 1024) std::endl;std::cout std::equal_tolong long()(1023, 1024): std::equal_tolong long()(1023, 1024) std::endl;std::cout std::equal_touint8_t()(1023, 1024): std::equal_touint8_t()(8, 32) std::endl;std::cout std::equal_touint16_t()(123, 456): std::equal_touint16_t()(123, 456) std::endl;std::cout std::equal_touint32_t()(101, 202): std::equal_touint32_t()(101, 202) std::endl;std::cout std::equal_touint64_t()(10230, 10240): std::equal_touint64_t()(10230, 10240) std::endl;std::cout std::equal_toint8_t()(1023, 1024): std::equal_toint8_t()(8, 32) std::endl;std::cout std::equal_toint16_t()(123, 456): std::equal_toint16_t()(123, 456) std::endl;std::cout std::equal_toint32_t()(101, 202): std::equal_toint32_t()(101, 202) std::endl;std::cout std::equal_toint64_t()(10230, 10240): std::equal_toint64_t()(10230, 10240) std::endl;std::cout std::equal_todouble()(3.14, 3.14): std::equal_todouble()(3.14, 3.14) std::endl;std::cout std::equal_tofloat()(3.14, 3.14): std::equal_tofloat()(3.14, 3.14) std::endl;std::cout std::equal_tofloat()(3, 3): std::equal_tofloat()(3, 3) std::endl;std::cout std::equal_tofloat()(3.56, 3.14): std::equal_tofloat()(3.56, 3.14) std::endl;std::cout std::equal_toint()(3.14, 3.14): std::equal_toint()(3.34, 3.34) std::endl;std::cout std::equal_toCell()(Cell{101, 101}, Cell{202, 202}): std::equal_toCell()(Cell{101, 101}, Cell{202, 202}) std::endl;std::cout std::equal_tostd::string()(\I am a \, \handsome programmer\): std::equal_tostd::string()(I am a , handsome programmer) std::endl;return 0;
}输出
std::equal_toint*()(1023, 1024): true
std::equal_tochar()(50, 2): false
std::equal_tochar()(a, 97): true
std::equal_toint()(1023, 1024): false
std::equal_tolong()(1023, 1024): false
std::equal_tolong long()(1023, 1024): false
std::equal_touint8_t()(1023, 1024): false
std::equal_touint16_t()(123, 456): false
std::equal_touint32_t()(101, 202): false
std::equal_touint64_t()(10230, 10240): false
std::equal_toint8_t()(1023, 1024): false
std::equal_toint16_t()(123, 456): false
std::equal_toint32_t()(101, 202): false
std::equal_toint64_t()(10230, 10240): false
std::equal_todouble()(3.14, 3.14): true
std::equal_tofloat()(3.14, 3.14): true
std::equal_tofloat()(3, 3): true
std::equal_tofloat()(3.56, 3.14): false
std::equal_toint()(3.14, 3.14): true
std::equal_toCell()(Cell{101, 101}, Cell{202, 202}): false
std::equal_tostd::string()(I am a , handsome programmer):false