यहां हम देखेंगे कि C++ में आउटपुट इटरेटर्स क्या हैं। आउटपुट इटरेटर्स के कुछ गुण हैं। ये नीचे दिए गए हैं:
- आउटपुट इटरेटर्स का उपयोग कंटेनर्स के मान को संशोधित करने के लिए किया जाता है।
- हम इस तरह के इटरेटर्स का उपयोग करके कंटेनर से डेटा नहीं पढ़ सकते।
- यह वन-वे और राइट-ओनली इटरेटर है।
- इसे इंक्रीमेंट किया जा सकता है, लेकिन डिक्रीमेंट नहीं किया जा सकता।
- आउटपुट इटरेटर्स के दो उप-भाग हैं। ये हैं इन्सर्ट इटरेटर और ostream इटरेटर।
इन्सर्ट इटरेटर
इन्सर्ट इटरेटर का उपयोग कंटेनर के अंदर कुछ एलिमेंट डालने के लिए किया जाता है। इस प्रकार के इटरेटर पर असाइनमेंट ऑपरेटर वर्तमान स्थिति में नया एलिमेंट डालता है। इन्सर्ट इटरेटर का सिंटैक्स नीचे जैसा है:
template<class Container, class Iterator> insert_iterator<container> inserter(Container &x, Iterator it);
यह इटरेटर दो पैरामीटर लेता है, x और it। x वह कंटेनर है जिस पर इटरेटर काम करेगा। दूसरा आर्गुमेंट एक इटरेटर ऑब्जेक्ट है, जो उस स्थिति की ओर इशारा कर रहा है जिसे संशोधित किया जाना है।
उदाहरण कोड
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> vec1, vec2;
for (int i = 1; i <= 10; i++) { // वैक्टर्स में एलिमेंट्स डालें
vec1.push_back(i);
vec2.push_back(i + 3);
}
vector<int>::iterator it = vec1.begin(); // इटरेटर वेक्टर1 पर काम करता है
advance(it, 5); // इसे 5वीं स्थिति पर आगे बढ़ाएं
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 में लिखने के लिए किया जाता है। ostream इटरेटर को basic_ostream ऑब्जेक्ट का उपयोग करके बनाया जा सकता है। जब इस प्रकार के इटरेटर के साथ असाइनमेंट ऑपरेटर का उपयोग किया जाता है, तो यह आउटपुट स्ट्रीम में नया एलिमेंट डालता है। सिंटैक्स नीचे जैसा है।
template<class T, class charT=char, class traits=char_traits<charT>> class ostream_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. यह उन एलिमेंट्स का प्रकार है जो डाले जाएंगे, charT, यह उन एलिमेंट्स का प्रकार है जिन्हें ostream हैंडल कर सकता है, और traits. ये कैरेक्टर ट्रेट्स हैं जिन्हें स्ट्रीम द्वारा हैंडल किया जा सकता है।
उदाहरण कोड
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> vector;
for (int i = 1; i <= 10; i++)
vector.push_back(i * i); // स्क्वायर बनाएं और डालें
ostream_iterator<int> out(cout, ",");
copy(vector.begin(), vector.end(), out);
return 0;
}
आउटपुट
1,4,9,16,25,36,49,64,81,100,
एक और उदाहरण,
उदाहरण कोड
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ostream_iterator<int> os_out(cout, ",");
*os_out = 10;
os_out++; // अगले को इंगित करें
*os_out = 20;
os_out++;
*os_out = 30;
return 0;
}
आउटपुट
10,20,30,