1: //general_inserters.cpp 3: #include <iostream> 4: #include <vector> 5: #include <deque> 6: #include <list> 7: #include <iterator> 8: #include <algorithm> 9: using namespace std; 11: int main() 12: { 13: cout << "\nThis program illustrates the use of a general " 14: "\"inserter\", which can be used\nif the recipient container " 15: "supports the insert() member function."; 16: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 18: cout << "\nFirst we display the contents of a character vector of " 19: "size 6 on one line,\nand the contents of a character list of " 20: "size 6 on the next line:\n"; 21: vector<char> v_c(6, 'A'); 22: list<char> list_c(6, 'B'); 23: copy(v_c.begin(), v_c.end(), ostream_iterator<char>(cout)); 24: cout << endl; 25: copy(list_c.begin(), list_c.end(), ostream_iterator<char>(cout)); 26: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 28: cout << "\nThen we use an \"inserter\" to insert the contents of " 29: "the character list into\nthe character vector, beginning at " 30: "position 4, and display the contents of\nthe revised vector to " 31: "confirm:\n"; 32: copy(list_c.begin(), list_c.end(), inserter(v_c, v_c.begin()+3)); 33: copy(v_c.begin(), v_c.end(), ostream_iterator<char>(cout)); 34: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 36: cout << "\nFinallly, we again use an inserter to insert the contents " 37: "of that revised\ncharacter vector back into the character list, " 38: "also beginning at position 4,\nand display the contents of the " 39: "revised list to confirm:\n"; 40: list<char>::iterator p=list_c.begin(); 41: ++p; ++p; ++p; 42: copy(v_c.begin(), v_c.end(), inserter(list_c, p)); 43: //__^__ 44: //Note: Can't use list_c.begin()+3 here. Why not? 45: copy(list_c.begin(), list_c.end(), ostream_iterator<char>(cout)); 46: cout << "\nPress Enter to continue ... "; cin.ignore(80, '\n'); 47: }