जैसा कि विधि के नाम से पता चलता है कि C++ STL में उपलब्ध विभिन्न विधियों के माध्यम से डेटा को कॉपी करने के लिए कॉपी () विधि का उपयोग किया जाता है। सभी विधियाँ कार्यक्षमता और मापदंडों में भिन्न हैं। ये तरीके <एल्गोरिदम> हेडर फाइल में उपलब्ध हैं। आइए प्रत्येक विधि और उनकी कार्यप्रणाली पर चर्चा करें।
कॉपी करें(start_i1, end_i1, start_i2)
इस विधि का उपयोग डेटा को एक इटरेटर से दूसरे इटरेटर में निर्दिष्ट सीमा के भीतर कॉपी करने के लिए किया जाता है जहां एक इटरेटर के प्रारंभ और अंत दोनों तत्व शामिल होते हैं। इसमें तीन तरह के तर्क होते हैं यानी -
-
प्रारंभ_i1 - यह पुनरावर्तक के प्रारंभिक तत्व को इंगित करेगा, मान लीजिए, i_1 जहां से तत्व को किसी अन्य पुनरावर्तक में कॉपी किया जाएगा, मान लीजिए, i_2।
-
End_i1 - यह पुनरावर्तक के अंतिम तत्व को इंगित करेगा, मान लीजिए, i_1 जब तक तत्व को किसी अन्य पुनरावर्तक में कॉपी नहीं किया जाएगा, मान लीजिए, i_2।
-
प्रारंभ_i2 - यह एक पुनरावर्तक के प्रारंभिक स्थान को इंगित करेगा जहां तत्वों की प्रतिलिपि बनाई जाएगी यानी i_2।
वापसी मूल्य - यह गंतव्य इटरेटर के अंत की ओर इशारा करते हुए एक इटरेटर लौटाएगा यानी i_2 जहां तक तत्वों की प्रतिलिपि बनाई गई है।
उदाहरण
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 20, 30, 40, 50 }; //declaring empty vector of size vector<int> vec_2(6); // using copy() function to copy in vector 2 copy(vec_1.begin(), vec_1.begin()+4, vec_2.begin()); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<4; i++){ cout<<vec_2[i] << " "; } }
आउटपुट
इस कोड का आउटपुट होगा -
Elements in vector v2 copied from v1: 10 20 30 40
copy_n(start_i1, कुल, start_i2)
इस विधि का उपयोग डेटा को एक इटरेटर से दूसरे इटरेटर में कॉपी करने के लिए भी किया जाता है, लेकिन यह कंपाइलर को बताता है कि किसी दिए गए स्थान से शुरू होने वाले कुल कितने तत्वों को कॉपी करने की आवश्यकता है। इसमें तीन तरह के तर्क होते हैं यानी—
-
प्रारंभ_i1 - यह पुनरावर्तक के प्रारंभिक तत्व को इंगित करेगा, मान लीजिए, i_1 जहां से तत्व को किसी अन्य पुनरावर्तक में कॉपी किया जाएगा, मान लीजिए, i_2।
-
कुल - यह बताता है कि start_i1 द्वारा निर्दिष्ट स्थान से कितने तत्वों की प्रतिलिपि बनाई जाएगी। यह धनात्मक और ऋणात्मक दोनों पूर्णांक ले सकता है लेकिन ऋणात्मक मान होने पर यह कोई संक्रिया नहीं करेगा।
-
प्रारंभ_i2 - यह एक पुनरावर्तक के प्रारंभिक स्थान को इंगित करेगा जहां तत्वों की प्रतिलिपि बनाई जाएगी यानी i_2।
वापसी मूल्य - यह गंतव्य इटरेटर के अंत की ओर इशारा करते हुए एक इटरेटर लौटाएगा यानी i_2 जहां तक तत्वों की प्रतिलिपि बनाई गई है।
उदाहरण
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 20, 30, 40, 50 }; //declaring empty vector of size vector<int> vec_2(6); // using copy_n() function to copy in vector 2 copy_n(vec_1.begin(), 4, vec_2.begin()); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<4; i++){ cout<<vec_2[i] << " "; } }
आउटपुट
इस कोड का आउटपुट होगा -
Elements in vector v2 copied from v1: 10 20 30 40
copy_if(start_i1, end_i1, start_i2, बूलियन फंक्शन)
इस विधि का उपयोग उस सीमा पर लागू शर्त के आधार पर निर्दिष्ट सीमा के भीतर एक पुनरावर्तक से दूसरे पुनरावर्तक में डेटा की प्रतिलिपि बनाने के लिए किया जाता है जिसे इस फ़ंक्शन को दिए गए चौथे तर्क में परिभाषित किया जाएगा। इसमें चार तरह के तर्क होते हैं यानी—
-
प्रारंभ_i1 - यह पुनरावर्तक के प्रारंभिक तत्व को इंगित करेगा, मान लीजिए, i_1 जहां से तत्व को किसी अन्य पुनरावर्तक में कॉपी किया जाएगा, मान लीजिए, i_2।
-
End_i1 - यह पुनरावर्तक के अंतिम तत्व को इंगित करेगा, मान लीजिए, i_1 जब तक तत्व को किसी अन्य पुनरावर्तक में कॉपी नहीं किया जाएगा, मान लीजिए, i_2।
-
प्रारंभ_i2 &मिनबस; यह एक पुनरावर्तक के प्रारंभिक स्थान को इंगित करेगा जहां तत्वों की प्रतिलिपि बनाई जाएगी यानी i_2।
-
बूलियन फ़ंक्शन - इस फ़ंक्शन में, हम उस शर्त को पारित करेंगे जिसे हम सीमा पर लागू करना चाहते हैं। चूंकि इस फ़ंक्शन का रिटर्न प्रकार बूलियन है, यह सही/गलत लौटाएगा और वापसी मूल्य के आधार पर श्रेणी तत्व प्रदर्शित किए जाएंगे।
वापसी मूल्य - यह गंतव्य इटरेटर के अंत की ओर इशारा करते हुए एक इटरेटर लौटाएगा यानी i_2 जहां तक तत्वों की प्रतिलिपि बनाई गई है।
उदाहरण
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 21, 30, 40, 57 }; //declaring empty vector of size vector<int> vec_2(6); // using copy_if() function to copy in vector 2 copy_if(vec_1.begin(), vec_1.end(), vec_2.begin(), [](int i){return i%2==0;}); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<4; i++){ cout<<vec_2[i] << " "; } }
आउटपुट
इस कोड का आउटपुट होगा -
Elements in vector v2 copied from v1: 10 30 40 0
copy_backwards(start_i1, end_i1, end_i2)
इस पद्धति का उपयोग एक पुनरावर्तक से दूसरे पुनरावर्तक में डेटा को पीछे की दिशा में निर्दिष्ट सीमा के भीतर कॉपी करने के लिए किया जाता है, जिसका अर्थ है कि पुनरावर्तक को उसके आकार के आधार पर अंत तक ले जाया जाएगा और उस स्थान से तत्वों को चिपकाया जाएगा। इसमें तीन तरह के तर्क होते हैं यानी—
-
प्रारंभ_i1 - यह पुनरावर्तक के प्रारंभिक तत्व को इंगित करेगा, मान लीजिए, i_1 जहां से तत्व को किसी अन्य पुनरावर्तक में कॉपी किया जाएगा, मान लीजिए, i_2।
-
End_i1 - यह पुनरावर्तक के अंतिम तत्व को इंगित करेगा, मान लीजिए, i_1 जब तक तत्व को किसी अन्य पुनरावर्तक में कॉपी नहीं किया जाएगा, मान लीजिए, i_2।
-
end_i2 - यह एक पुनरावर्तक के अंतिम स्थान को इंगित करेगा जहां तत्वों की प्रतिलिपि बनाई जाएगी यानी i_2।
वापसी मूल्य - यह गंतव्य इटरेटर के शुरुआती तत्व की ओर इशारा करते हुए एक पुनरावर्तक लौटाएगा यानी i_2 जहां तक तत्वों की प्रतिलिपि बनाई गई है।
उदाहरण
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ //creating vector v1 vector<int> vec_1 = { 10, 21, 30, 40, 57,67 }; //declaring empty vector of size vector<int> vec_2(6); // using copy_backward() function to copy in vector 2 copy_backward(vec_1.begin(), vec_1.end()+4, vec_2.begin()+5); //print new vector cout<<"Elements in vector v2 copied from v1: "; for(int i=0; i<vec_2.size(); i++){ cout<<vec_2[i] << " "; } }
आउटपुट
इस कोड का आउटपुट होगा -
Elements in vector v2 copied from v1: 0 10 21 30 40 0