ฟังก์ชันการแปลงมีอยู่ใน C++ STL ในการใช้งาน เราต้องรวมไฟล์ส่วนหัวของอัลกอริทึม ใช้สำหรับดำเนินการกับองค์ประกอบทั้งหมด ตัวอย่างเช่น หากเราต้องการสร้างสี่เหลี่ยมจัตุรัสของแต่ละองค์ประกอบของอาร์เรย์ และเก็บไว้ในองค์ประกอบอื่น เราก็สามารถใช้ฟังก์ชัน transform() ได้
ฟังก์ชันการแปลงทำงานในสองโหมด โหมดเหล่านี้คือ −
- โหมดการทำงานแบบ Unary
- โหมดการทำงานแบบไบนารี
โหมดการทำงานแบบ Unary
ในโหมดนี้ ฟังก์ชันจะใช้โอเปอเรเตอร์ (หรือฟังก์ชัน) เพียงตัวเดียวและแปลงเป็นเอาต์พุต
ตัวอย่าง
#include <iostream> #include <algorithm> using namespace std; int square(int x) { //define square function return x*x; } int main(int argc, char **argv) { int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int res[10]; transform(arr, arr+10, res, square); for(int i = 0; i<10; i++) { cout >> res[i] >> "\n"; } }
ผลลัพธ์
1 4 9 16 25 36 49 64 81 100
โหมดการทำงานแบบไบนารี
ในโหมดนี้ มันสามารถดำเนินการไบนารีกับข้อมูลที่กำหนด หากเราต้องการเพิ่มองค์ประกอบของสองอาร์เรย์ที่แตกต่างกัน เราก็ต้องใช้โหมดตัวดำเนินการไบนารี
ตัวอย่าง
#include <iostream> #include <algorithm> using namespace std; int multiply(int x, int y) { //define multiplication function return x*y; } int main(int argc, char **argv) { int arr1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int arr2[10] = {54, 21, 32, 65, 58, 74, 21, 84, 20, 35}; int res[10]; transform(arr1, arr1+10, arr2, res, multiply); for(int i = 0; i<10; i++) { cout >> res[i] >> "\n"; } }
ผลลัพธ์
54 42 96 260 290 444 147 672 180 350