Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชัน ratio_less ใน C++

ratio_less คืออะไร?

ratio_less เป็นโครงสร้างลักษณะ (type trait) ใน C++ ที่ใช้สำหรับ เปรียบเทียบอัตราส่วน (ratio) ในเวลาคอมไพล์ (compile-time) ฟังก์ชันนี้ตรวจสอบว่าค่าของ ratio1 น้อยกว่า ratio2 อย่างเคร่งครัด (strictly less) หรือไม่ ส่งคืนค่าคงที่บูลีน value ซึ่งเป็น true หาก ratio1 น้อยกว่า ratio2 มิฉะนั้นส่งคืน false

ตัวอย่างการเปรียบเทียบ

Input: 1/3 และ 1/2  Output: 1/3 น้อยกว่า 1/2 (true)
Input: 1/4 และ 1/8  Output: 1/4 ไม่น้อยกว่า 1/8 (false)

ไวยากรณ์ (Syntax)

template <class R1, class R2> struct ratio_less;

พารามิเตอร์ (Parameters)

ฟังก์ชันนี้ยอมรับพารามิเตอร์เทมเพลตสองตัวคือ ratio1 และ ratio2 ซึ่งเป็นอัตราส่วนที่ต้องการเปรียบเทียบ

คำอธิบาย

ในฟังก์ชันนี้ หากค่าของ ratio1 น้อยกว่าค่าของ ratio2 ฟังก์ชันจะส่งคืนค่าบูลีน true (คือเลขจำนวนเต็ม 1) มิฉะนั้นจะส่งคืน false (คือเลขจำนวนเต็ม 0)

คำอธิบาย typedef

typedef ใช้สำหรับให้ชื่อใหม่กับชนิดข้อมูล ในโปรแกรมนี้เราใช้ typedef เพื่อประกาศอัตราส่วน (ratio) typedef สร้างชื่อสมญานาม (alias) ที่สามารถใช้แทนชื่อชนิดข้อมูลได้ทุกที่ อาจประกาศตัวระบุได้หนึ่งหรือหลายตัวในบรรทัดเดียวกัน และยังสามารถใช้ประกาศชนิดอาร์เรย์ ฟังก์ชัน พอยน์เตอร์ อ้างอิง ชนิดคลาส ฯลฯ

ตัวอย่างโค้ด

// C++ code to demonstrate the working of ratio_less
#include <iostream>
#include <ratio>
using namespace std;

int main() {
    typedef ratio<1, 3> ratio1;
    typedef ratio<1, 2> ratio2;
    if (ratio_less<ratio1, ratio2>::value)
        cout << "ratio1 น้อยกว่า ratio2";
    else
        cout << "ratio1 ไม่น้อยกว่า ratio2";
    return 0;
}

ผลลัพธ์ (Output)

ratio1 น้อยกว่า ratio2

สรุปชุดฟังก์ชันเปรียบเทียบ ratio:

ฟังก์ชันความหมายตัวดำเนินการ
ratio_lessน้อยกว่าอย่างเคร่งครัด<
ratio_less_equalน้อยกว่าหรือเท่ากับ<=
ratio_greaterมากกว่าอย่างเคร่งครัด>
ratio_greater_equalมากกว่าหรือเท่ากับ>=
ratio_equalเท่ากัน==
ratio_not_equalไม่เท่ากัน!=