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

การสร้างกรณีทดสอบ (generate() และ generate_n() ใน C++


ในส่วนนี้ เราจะมาดูกันว่าเราจะใช้ฟังก์ชัน C++ STL เพื่อสร้างกรณีทดสอบได้อย่างไร บางครั้งการสร้างกรณีทดสอบสำหรับโปรแกรมอาร์เรย์อาจเป็นกระบวนการที่ซับซ้อนและไม่มีประสิทธิภาพ C ++ มีวิธีการสองวิธีในการสร้างกรณีทดสอบ วิธีการเหล่านี้มีดังนี้ −

วิธี create()

ฟังก์ชัน C++ std::algorithm::generate() กำหนดค่าที่ส่งคืนโดยการเรียก gen ที่ต่อเนื่องกันไปยังองค์ประกอบในช่วงแรกถึงสุดท้าย ต้องใช้พารามิเตอร์สามตัวก่อน ตัวสุดท้าย และ gen สิ่งเหล่านี้คือตัววนไปข้างหน้าไปยังตำแหน่งเริ่มต้น ตัววนซ้ำย้อนกลับไปยังตำแหน่งสุดท้ายและฟังก์ชันตัวสร้างที่ถูกเรียกโดยไม่มีอาร์กิวเมนต์ และส่งกลับค่า

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;
int create_random() {
   return (rand() % 1000);
}
int main () {
   srand(time(NULL));
   vector<int> data(15);
   generate(data.begin(), data.end(), create_random);
   for (int i=0; i<data.size(); i++)
      cout << data[i] << " " ;
}

ผลลัพธ์

449 180 785 629 547 912 581 520 534 778 670 302 345 965 107

เมธอด generate_n()

ฟังก์ชัน C++ std::algorithm::generate_n() กำหนดค่าที่ส่งคืนโดยการเรียก gen ต่อเนื่องกันสำหรับ n องค์ประกอบแรก ต้องใช้พารามิเตอร์สามตัวก่อน n และ gen สิ่งเหล่านี้เป็นตัววนไปข้างหน้าไปยังตำแหน่งเริ่มต้น จำนวนการเรียกจะอยู่ที่นั่น และฟังก์ชันตัวสร้างที่เรียกใช้โดยไม่มีอาร์กิวเมนต์ และส่งกลับค่า

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;
int create_random() {
   return (rand() % 1000);
}
int main () {
   srand(time(NULL));
   vector<int> data(15);
   generate_n(data.begin(), 6, create_random);
   for (int i=0; i<data.size(); i++)
      cout << data[i] << " " ;
}

ผลลัพธ์

540 744 814 771 254 913 0 0 0 0 0 0 0 0 0