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

โปรแกรม C++ เพื่อค้นหาประเภทของตัววนซ้ำที่กำหนด


iterator เป็นอ็อบเจ็กต์เหมือนกับตัวชี้ที่ใช้ในการวนซ้ำองค์ประกอบของคอนเทนเนอร์ ข้อได้เปรียบหลักของการใช้ตัววนซ้ำคือการสร้างอินเทอร์เฟซทั่วไปและทำให้อัลกอริธึมปลอดจากประเภทของคอนเทนเนอร์ที่ใช้ในการติดตั้ง

ในไลบรารีมาตรฐาน C++ มีประเภทของตัววนซ้ำ -

  • ตัววนซ้ำไปข้างหน้า
  • ตัววนซ้ำสองทิศทาง
  • ตัววนซ้ำอินพุต
  • ตัวทำซ้ำเอาต์พุต
  • ตัววนซ้ำการเข้าถึงแบบสุ่ม

โปรแกรมคือการตรวจสอบว่าตัววนซ้ำใดข้างต้นถูกใช้โดยโครงสร้างข้อมูล

มีปัจจัยบางประการที่อาจเป็นประโยชน์ในการพิจารณาประเภทของตัววนซ้ำที่ใช้

  • พิมพ์ดีด ส่งคืนข้อมูลการระบุประเภทที่รันไทม์

  • ลักษณะการวนซ้ำ กำหนดคุณสมบัติที่ iterator มี

  • หมวดหมู่ตัววนซ้ำ ใช้เพื่อกำหนดหมวดหมู่ที่พวกเขากำหนดให้ตัววนซ้ำอยู่

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
template <class T>
string iteratortype(T iterator){
   if (typeid(typename iterator_traits<T>::iterator_category)
      == typeid(input_iterator_tag))
      return "Input";
   else if (typeid(typename iterator_traits<T>::iterator_category)
      == typeid(output_iterator_tag))
      return "Output";
   else if (typeid(typename iterator_traits<T>::iterator_category)
      == typeid(forward_iterator_tag))
      return "Forward";
   else if (typeid(typename iterator_traits<T>::iterator_category)
      == typeid(bidirectional_iterator_tag))
      return "Bidirectional";
   else if (typeid(typename iterator_traits<T>::iterator_category)
      == typeid(random_access_iterator_tag))
      return "Random_Access";
   return "Missing";
}
int main(){
   vector<int> vec;
   auto iter = vec.begin();
   cout <<iteratortype(iter) << " Iterator\n";
   return 0;
}

ผลลัพธ์

Random_Access Iterator