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

โปรแกรม C++ หาประเภทของ Iterator ที่กำหนด

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

ในไลบรารีมาตรฐาน C++ มีประเภทของ Iterator ดังนี้:

  • Forward iterator
  • Bidirectional iterator
  • Input iterator
  • Output iterator
  • Random Access iterator

โปรแกรมนี้ใช้เพื่อตรวจสอบว่าคอนเทนเนอร์ใช้ iterator ประเภทใด

มีปัจจัยบางอย่างที่ช่วยกำหนดประเภทของ iterator:

  • typeid ส่งคืนข้อมูลระบุประเภทในขณะรันโปรแกรม (runtime)

  • iterator traits กำหนดคุณสมบัติที่ iterator มีอยู่

  • iterator category ใช้กำหนดหมวดหมู่ที่ 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