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

ตัวทำซ้ำเอาต์พุตใน C ++


ที่นี่เราจะดูว่าตัววนซ้ำเอาต์พุตใน C ++ คืออะไร ตัววนซ้ำเอาต์พุตมีคุณสมบัติบางอย่าง เหล่านี้เป็นเหมือนด้านล่าง:

  • ตัววนซ้ำเอาต์พุตใช้เพื่อแก้ไขค่าของคอนเทนเนอร์
  • เราไม่สามารถอ่านข้อมูลจากคอนเทนเนอร์โดยใช้ตัววนซ้ำประเภทนี้ได้
  • นี่คือตัววนซ้ำแบบทางเดียวและแบบเขียนเท่านั้น
  • เพิ่มได้ แต่ลดไม่ได้
  • ตัววนซ้ำเอาต์พุตมีสองส่วนย่อย สิ่งเหล่านี้คือ Insert Iterator และ ostreamiterator

ตัวทำซ้ำการแทรก

ตัววนซ้ำการแทรกใช้เพื่อแทรกองค์ประกอบบางอย่างภายในคอนเทนเนอร์ ตัวดำเนินการมอบหมายบนตัววนซ้ำประเภทนี้จะแทรกองค์ประกอบใหม่ที่ตำแหน่งปัจจุบัน ไวยากรณ์ของตัวแทรกมีลักษณะดังนี้:

template<class Container, class Iterator>
insert_iterator<container> inserter(Container &x,Iterator it);

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

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

#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
int main () {
   vector<int> vec1,vec2;
   for (int i=1; i<=10; i++) { //insert elements into vectors
      vec1.push_back(i);
      vec2.push_back(i+3);
   }
   vector<int>::iterator it = vec1.begin(); //iterator works on vector1
   advance (it,5); //advance it to 5 position
   copy (vec2.begin(),vec2.end(),inserter(vec1,it));
   cout<<"Elements of vec1 are :";
   for ( it = vec1.begin(); it!= vec1.end(); ++it )
      cout << ' ' << *it;
      cout << endl;
   return 0;
}

ผลลัพธ์

Elements of vec1 are : 1 2 3 4 5 4 5 6 7 8 9 10 11 12 13 6 7 8 9 10

ตัววนซ้ำ ostream

ตัววนซ้ำ ostream ใช้เพื่อเขียนไปยังเอาต์พุตสตรีมเช่น cout ostreamiterator สามารถสร้างได้โดยใช้อ็อบเจกต์ basic_ostream เมื่อใช้ตัวดำเนินการกำหนดกับ iterator ประเภทนี้ มันจะแทรกองค์ประกอบใหม่ไปยังเอาต์พุตสตรีม ไวยากรณ์เป็นเหมือนด้านล่าง

template<class T, class charT=char, class traits=char_traits<charT>>
class ostream_iterator;

ฟังก์ชันสมาชิกของคลาส iterator ostream มีลักษณะดังนี้

ostream_iterator<T, charT, traits>& operator=(const T& value);
ostream_iterator<T, charT, traits>& operator*();
ostream_iterator<T, charT, traits>& operator++();
ostream_iterator<T, charT, traits>& operator++(int);

พารามิเตอร์คือ:T นี่คือประเภทขององค์ประกอบที่จะแทรก แผนภูมิ นี่คือประเภทขององค์ประกอบที่ ostream สามารถจัดการได้ และลักษณะ สิ่งเหล่านี้เป็นคุณลักษณะของตัวละครที่สตรีมสามารถจัดการได้

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

#include <iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
main() {
   vector<int> vector;
   for(int i=1;i<=10;i++)
      vector.push_back(i*i); //make square and insert
      ostream_iterator<int> out(cout,",");
      copy(vector.begin(),vector.end(),out);
}

ผลลัพธ์

1,4,9,16,25,36,49,64,81,100,

อีกตัวอย่างหนึ่ง

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

#include <iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
main() {
   ostream_iterator<int> os_out(cout,",");
   *os_out = 10;
   os_out++; //point to next
   *os_out = 20;
   os_out++;
   *os_out = 30;
}

ผลลัพธ์

10,20,30,