============================MODULE35======================================= | | | The program examples' source codes have been arranged in the same | | order that appeared in the Tutorial. This is unedited and unverified | | compilation. Published as is basis for educational, reacretional and | | brain teaser purposes. All trademarks, copyrights and IPs, wherever | | exist, are the sole property of their respective owner and/or | | holder. Any damage or loss by using the materials presented in this | | tutorial is USER responsibility. Part or full distribution, | | reproduction and modification is granted to any body. | | Copyright 2003-2005 © Tenouk, Inc. All rights reserved. | | Distributed through http://www.tenouk.com | | | | | =========================================================================== Originally programs compiled using Borland C++. Examples compiled using g++ are given at the end of every Module. For example if you want to compile C++ codes using VC++/VC++ .Net, change the header file accordingly. Just need some modification for the header files...: ------------------------------------------------- #include //for system() #include ... { C++ codes... } ------------------------------------------------- should be changed to: ------------------------------------------------- #include //use C++ wrapper to call C functions from C++ programs... #include using namespace std; ... { C++ codes... } ------------------------------------------------- In VC++/VC++ .Net the iostream.h (header with .h) is not valid anymore. It should be C++ header, so that it comply to the standard. In older Borland C++ compiler this still works, but not proper any more... and for standard C/C++ the portability should be no problem or better you read Module23 at http://www.tenouk.com/Module23.html to get the big picture...For C codes, they still C codes :o) ========================================================================= ============================HERE, ALL C++ codes========================== //algorithm, inplace_merge() #include #include //For greater() #include #include using namespace std; //Return whether modulus of elem1 is less than modulus of elem2 bool mod_lesser(int elem1, int elem2) { if(elem1 < 0) elem1 = - elem1; if(elem2 < 0) elem2 = - elem2; return (elem1 < elem2); } int main() { vector vec1; vector ::iterator Iter1, Iter2, Iter3; //Constructing vector vec1 with default less-than ordering int i; for(i = 0; i <= 5; i++) vec1.push_back(i); int j; for(j =-5; j <= 0; j++) vec1.push_back(j); cout<<"vector vec1 data with subranges sorted by the " <<"binary\npredicate less than is: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout< vec2(vec1); vector ::iterator break2; break2 = find(vec2.begin(), vec2.end(), -5); sort(vec2.begin(), break2, greater()); sort(break2, vec2.end(), greater()); cout<<"\nvector vec2 data with subranges sorted by the " <<"binary\npredicate greater is: "; for(Iter2 = vec2.begin(); Iter2 != vec2.end(); Iter2++) cout<<*Iter2<<" "; cout< vec3(vec1); vector ::iterator break3; break3 = find(vec3.begin(), vec3.end(), -5); sort(vec3.begin(), break3, mod_lesser); sort(break3, vec3.end(), mod_lesser); cout<<"\nvector vec3 data with subranges sorted by the " <<"binary\npredicate mod_lesser is: "; for(Iter3 = vec3.begin(); Iter3 != vec3.end(); Iter3++) cout<<*Iter3<<" "; cout<::iterator break1; break1 = find(vec1.begin(), vec1.end(), -5); inplace_merge(vec1.begin(), break1, vec1.end()); cout<<"\nvector vec1merg data, merged inplace with\ndefault order: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout<() inplace_merge(vec2.begin(), break2, vec2.end(), greater()); cout<<"\nvector vec2merg data, merged inplace with binary\npredicate greater specified: "; for(Iter2 = vec2.begin(); Iter2 != vec2.end(); Iter2++) cout<<*Iter2<<" "; cout< #include #include #include using namespace std; class CInt; ostream& operator<<(ostream& osIn, const CInt& rhs); class CInt { public: CInt(int n = 0) : m_nVal(n){} CInt(const CInt& rhs) : m_nVal(rhs.m_nVal){} CInt& operator=(const CInt& rhs) { m_nVal = rhs.m_nVal; return *this;} bool operator<(const CInt& rhs) const { return (m_nVal < rhs.m_nVal);} friend ostream& operator<<(ostream& osIn, const CInt& rhs); private: int m_nVal; }; inline ostream& operator<<(ostream& osIn, const CInt& rhs) { osIn<<"CInt(" < deq; deque::iterator deqIter; deq.push_back(c1); deq.push_back(c2); deq.push_back(c3); cout<<"The deque of CInts data is:\n"; for(deqIter = deq.begin(); deqIter != --deq.end(); deqIter++) cout<<" "<<*deqIter<<","; deqIter = --deq.end(); cout<<" "<<*deqIter< vec; vector ::iterator Iter1; deque deq1; deque ::iterator deq1Iter; int i; for(i = 10; i <= 14; i++) vec.push_back(i); int j; for(j = 16; j <= 20; j++) deq1.push_back(j); cout<<"\nVector vec data: "; for(Iter1 = vec.begin(); Iter1 != vec.end(); Iter1++) cout<<*Iter1<<" "; cout< #include #include #include using namespace std; //Return whether second element is twice the first bool twice(int elem1, int elem2) {return (2*elem1) < elem2;} int main() { vector vec1, vec2; list lst; vector ::iterator Iter1, Iter2; list ::iterator lst_Iter, lst_inIter; int i; for(i = 0; i <= 5; i++) vec1.push_back(5*i); int j; for(j = 0; j <= 6; j++) lst.push_back(5*j); int k; for(k = 0; k <= 5; k++) vec2.push_back(10*k); cout<<"Vector vec1 data: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout< #include //For greater() #include #include using namespace std; //Return whether modulus of elem1 is less than modulus of elem2 bool mod_lesser(int elem1, int elem2) { if(elem1 < 0) elem1 = - elem1; if(elem2 < 0) elem2 = - elem2; return (elem1 < elem2); } int main() { vector vec1; vector ::iterator Iter1, Result1; //Constructing vectors vec1a & vec1b with default less than ordering int i; for(i = -3; i <= 6; i++) vec1.push_back(i); int j; for(j =-5; j <= 2; j++) vec1.push_back(j); cout<<"Operation: sort(vec1.begin(), vec1.end()).\n"; sort(vec1.begin(), vec1.end()); cout<<"vector vec1 data with range sorted by the " <<"binary predicate\nless than is: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout< vec2(vec1); vector ::iterator Iter2, Result2; cout<<"\nOperation: sort(vec2.begin(), vec2.end(), greater()).\n"; sort(vec2.begin(), vec2.end(), greater()); cout<<"vector vec2 data with range sorted by the " <<"binary predicate\ngreater is: "; for(Iter2 = vec2.begin(); Iter2 != vec2.end(); Iter2++) cout<<*Iter2<<" "; cout< vec3(vec1); vector ::iterator Iter3, Result3; cout<<"\nOperation: sort(vec3.begin(), vec3.end(), mod_lesser).\n"; sort(vec3.begin(), vec3.end(), mod_lesser); cout<<"vector vec3 data with range sorted by the " <<"binary predicate\nmod_lesser is: "; for(Iter3 = vec3.begin(); Iter3 != vec3.end(); Iter3++) cout<<*Iter3<<" "; cout<() cout<<"\nOperation: lower_bound(vec1.begin(), vec1.end(), 5).\n"; Result1 = lower_bound(vec1.begin(), vec1.end(), 5); cout<<"The lower_bound in vec2 for the\nelement with a value of 5 is: "<<*Result1<() Result2 = lower_bound(vec2.begin(), vec2.end(), 5, greater()); cout<<"The lower_bound in vec2 for the\nelement with a value of 5 is: "<<*Result2< #include #include #include using namespace std; int main() { vector vec1, vec2; vector ::iterator Iter1, Iter2; int i; for(i = 0; i <= 10; i++) vec1.push_back(i); cout<<"Opertion: random_shuffle(vec1.begin(), vec1.end()).\n"; random_shuffle(vec1.begin(), vec1.end()); cout<<"Vector vec1 is data:\n"; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout<()).\n"; make_heap(vec1.begin(), vec1.end(), greater()); cout<<"The greater-than heaped version of vec1 data:\n"; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout< #include #include #include using namespace std; class CInt; ostream& operator<<(ostream& osIn, const CInt& rhs); class CInt { public: CInt(int n = 0) : m_nVal(n){} CInt(const CInt& rhs) : m_nVal(rhs.m_nVal){} CInt& operator=(const CInt& rhs) {m_nVal = rhs.m_nVal; return *this;} bool operator<( const CInt& rhs ) const {return (m_nVal < rhs.m_nVal);} friend ostream& operator<<(ostream& osIn, const CInt& rhs); private: int m_nVal; }; inline ostream& operator<<(ostream& osIn, const CInt& rhs) { osIn<<"CInt("< elem2); }; int main() { //Comparing integers directly using the max algorithm int a = 11, b = -12, c = 20; const int& result1 = max(a, b, mod_greater); const int& result2 = max(b, c); cout<<"The mod_greater of the integers 11 and -12 is: "< st1, st2, st3; set::iterator st1_Iter, st2_Iter, st3_Iter; st1.insert(c1); st1.insert(c2); st2.insert(c2); st2.insert(c3); cout<<"st1 data: ("; for(st1_Iter = st1.begin(); st1_Iter != --st1.end(); st1_Iter++) cout<<*st1_Iter<<","; st1_Iter = --st1.end(); cout<<*st1_Iter<<")."< vec1, vec2, vec3, vec4, vec5; vector ::iterator Iter1, Iter2, Iter3, Iter4, Iter5; int i; for(i = 0; i <= 3; i++) vec1.push_back(i); int j; for(j = 0; j <= 4; j++) vec2.push_back(j); int k; for(k = 0; k <= 2; k++) vec3.push_back(2*k); cout<<"\nVector vec1 data: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout< #include #include #include using namespace std; class CInt; ostream& operator<<(ostream& osIn, const CInt& rhs); class CInt { public: CInt(int n = 0) : m_nVal(n){} CInt(const CInt& rhs) : m_nVal(rhs.m_nVal){} CInt& operator=(const CInt& rhs) {m_nVal = rhs.m_nVal; return *this;} bool operator<(const CInt& rhs) const {return (m_nVal < rhs.m_nVal);} friend ostream& operator<<(ostream& osIn, const CInt& rhs); private: int m_nVal; }; inline ostream& operator<<(ostream& osIn, const CInt& rhs) { osIn<<"CInt("< st1; set::iterator st1_Iter, st2_Iter, st3_Iter; st1.insert(c1); st1.insert(c2); st1.insert(c3); cout<<"st1 data: "; for(st1_Iter = st1.begin(); st1_Iter != --st1.end(); st1_Iter++) cout<<" "<<*st1_Iter<<","; st1_Iter = --st1.end(); cout<<" "<<*st1_Iter< vec; vector ::iterator vec_Iter, vec1_Iter, vec2_Iter; int i; for(i = 0; i <= 3; i++) vec.push_back(i); int j; for(j = 1; j <= 4; j++) vec.push_back(-j); cout<<"Vector vec data: "; for(vec_Iter = vec.begin(); vec_Iter != vec.end(); vec_Iter++) cout<<*vec_Iter<<" "; cout< #include //For greater() #include #include using namespace std; //Return whether modulus of elem1 is less than modulus of elem2 bool mod_lesser(int elem1, int elem2) { if(elem1 < 0) elem1 = - elem1; if(elem2 < 0) elem2 = - elem2; return (elem1 < elem2); } int main() { vector vec1a, vec1b, vec1(12); vector ::iterator Iter1a, Iter1b, Iter1; //Constructing vector vec1a and vec1b with default less than ordering int i; for(i = 0; i <= 5; i++) vec1a.push_back(i); int j; for(j =-5; j <= 0; j++) vec1b.push_back(j); cout<<"vector vec1a data with range sorted by the\n" <<"binary predicate less than is: "; for(Iter1a = vec1a.begin(); Iter1a != vec1a.end(); Iter1a++) cout<<*Iter1a<<" "; cout< vec2a(vec1a), vec2b(vec1b), vec2(vec1); vector ::iterator Iter2a, Iter2b, Iter2; sort(vec2a.begin(), vec2a.end(), greater()); sort(vec2b.begin(), vec2b.end(), greater()); cout<<"vector vec2a data with range sorted by the\n" <<"binary predicate greater is: "; for(Iter2a = vec2a.begin(); Iter2a != vec2a.end(); Iter2a++) cout<<*Iter2a<<" "; cout< vec3a(vec1a), vec3b(vec1b), vec3(vec1); vector ::iterator Iter3a, Iter3b, Iter3; sort(vec3a.begin(), vec3a.end(), mod_lesser); sort(vec3b.begin(), vec3b.end(), mod_lesser); cout<<"vector vec3a data with range sorted by the\n" <<"binary predicate mod_lesser is: "; for(Iter3a = vec3a.begin(); Iter3a != vec3a.end(); Iter3a++) cout<<*Iter3a<<" "; cout<() cout<<"\nOperation: merge(vec1a.begin(),vec1a.end(),\nvec1b.begin(),vec1b.end(),vec1.begin()).\n"; merge(vec1a.begin(), vec1a.end(), vec1b.begin(), vec1b.end(), vec1.begin()); cout<<"vector vec1merg data, merged with default order:\n"; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout<() cout<<"\nOperation: merge(vec2a.begin(),vec2a.end(),\nvec2b.begin(),vec2b.end(),vec2.begin(),greater()).\n"; merge(vec2a.begin(), vec2a.end(), vec2b.begin(), vec2b.end(), vec2.begin(), greater()); cout<<"vector vec2merg data, merged with binary predicate\ngreater is: "; for(Iter2 = vec2.begin(); Iter2 != vec2.end(); Iter2++) cout<<*Iter2<<" "; cout< #include #include #include using namespace std; class CInt; ostream& operator<<(ostream& osIn, const CInt& rhs); class CInt { public: CInt(int n = 0) : m_nVal(n){} CInt(const CInt& rhs) : m_nVal(rhs.m_nVal){} CInt& operator=(const CInt& rhs) { m_nVal = rhs.m_nVal; return *this; } bool operator<(const CInt& rhs) const {return (m_nVal < rhs.m_nVal);} friend ostream& operator<<(ostream& osIn, const CInt& rhs); private: int m_nVal; }; inline ostream& operator<<(ostream& osIn, const CInt& rhs) { osIn<<"CInt("< st1, st2, st3; set::iterator st1Iter, st2Iter, st3Iter; st1.insert(ci1); st1.insert(ci2); st2.insert(ci2); st2.insert(ci3); cout<<"st1 data: ("; for(st1Iter = st1.begin(); st1Iter != --st1.end(); st1Iter++) cout<<*st1Iter<<","; st1Iter = --st1.end(); cout<<*st1Iter<<")"< vec1, vec2, vec3, vec4, vec5; vector ::iterator Iter1, Iter2, Iter3, Iter4, Iter5; int i; for(i = 1; i <= 4; i++) vec1.push_back(i); int j; for(j = 1; j <= 3; j++) vec2.push_back(j); int k; for(k = 1; k <= 3; k++) vec3.push_back(2*k); cout<<"\nVector vec1 data: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout< #include #include #include using namespace std; class CInt; ostream& operator<<(ostream& osIn, const CInt& rhs); class CInt { public: CInt(int n = 0) : m_nVal(n){} CInt(const CInt& rhs) : m_nVal( rhs.m_nVal ){} CInt& operator=(const CInt& rhs) { m_nVal = rhs.m_nVal; return *this; } bool operator<(const CInt& rhs) const {return (m_nVal < rhs.m_nVal);} friend ostream& operator<<(ostream& osIn, const CInt& rhs); private: int m_nVal; }; inline ostream& operator<<(ostream& osIn, const CInt& rhs) { osIn<<"CInt("< st1; set::iterator st1Iter, st2Iter, st3Iter; st1.insert(ci1); st1.insert(ci2); st1.insert(ci3); cout<<"st1 data: "; for(st1Iter = st1.begin(); st1Iter != --st1.end(); st1Iter++) cout<<*st1Iter<<","; st1Iter = --st1.end(); cout<<*st1Iter< vec1; vector ::iterator vec1Iter, vec2Iter, vec3Iter; int i; for(i = 1; i <= 4; i++) vec1.push_back(i); int j; for(j = 1; j <= 5; j++) vec1.push_back(-2*j); cout<<"\nVector vec1 data: "; for(vec1Iter = vec1.begin(); vec1Iter != vec1.end(); vec1Iter++) cout<<*vec1Iter<<" "; cout< #include #include #include using namespace std; //Return whether second element is twice the first bool twice(int elem1, int elem2) { return (elem1 * 2 == elem2);} int main() { vector vec1, vec2; list lst; vector ::iterator Iter1, Iter2; list ::iterator lst_Iter, lst_inIter; int i; for(i = 0; i <= 5; i++) vec1.push_back(5*i); int j; for(j = 0; j <= 7; j++) lst.push_back(5*j); int k; for(k = 0; k <= 5; k++) vec2.push_back(10*k); cout<<"Vector vec1 data: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout<::iterator, list ::iterator> result1; result1 = mismatch(vec1.begin(), vec1.end(), lst.begin()); cout<<"\nOperation: mismatch(vec1.begin(), vec1.end(), lst.begin()).\n"; if(result1.first == vec1.end()) cout<<"The two ranges do not differ."<::iterator, vector ::iterator> result2; cout<<"\nOperation: mismatch(vec1.begin(), vec1.end(), vec2.begin(), twice).\n"; result2 = mismatch(vec1.begin(), vec1.end(), vec2.begin(), twice); if(result2.first == vec1.end()) cout<<"The two ranges do not differ based on the\nbinary predicate twice."< #include #include #include using namespace std; class CInt; ostream& operator<<(ostream& osIn, const CInt& rhs); class CInt { public: CInt(int n = 0) : m_nVal(n){} CInt(const CInt& rhs) : m_nVal(rhs.m_nVal){} CInt& operator=(const CInt& rhs) {m_nVal = rhs.m_nVal; return *this;} bool operator<(const CInt& rhs) const {return (m_nVal < rhs.m_nVal);} friend ostream& operator<<(ostream& osIn, const CInt& rhs); private: int m_nVal; }; inline ostream& operator<<(ostream& osIn, const CInt& rhs) { osIn<<"CInt("< deq1, deq2, deq3; deque::iterator deq1Iter; deq1.push_back(ci1); deq1.push_back(ci2); deq1.push_back(ci3); cout<<"deque deq1 of CInts data is: "; for(deq1Iter = deq1.begin(); deq1Iter != --deq1.end(); deq1Iter++) cout<<" "<<*deq1Iter<<","; deq1Iter = --deq1.end(); cout<<" "<<*deq1Iter< vec1; vector ::iterator Iter1; int i; for(i = -3; i <= 4; i++) vec1.push_back(i); cout<<"\nVector vec1 data: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout< #include //For greater() #include #include using namespace std; //user defined function, return whether //first element is greater than the second bool great(int elem1, int elem2) {return (elem1 > elem2);} int main() { vector vec; vector ::iterator Iter1; int i; for(i = 0; i <= 5; i++) vec.push_back(i); int j; for(j = 10; j <= 15; j++) vec.push_back(j); int k; for(k = 20; k <= 25; k++) vec.push_back(k); cout<<"vector vec data:\n"; for(Iter1 = vec.begin(); Iter1 != vec.end(); Iter1++) cout<<*Iter1<<" "; cout<()).\n"; nth_element(vec.begin(), vec.begin()+4, vec.end(), greater()); cout<<"Position 4 partitioned (greater) vector vec data:\n"; for(Iter1 = vec.begin(); Iter1 != vec.end(); Iter1++) cout<<*Iter1<<" "; cout< #include //For greater() #include #include using namespace std; //user defined, return whether first //element is greater than the second bool great(int elem1, int elem2) {return elem1 > elem2;} int main() { vector vec1; vector ::iterator Iter1; //fill up the vector with data... int i; for(i = 10; i <= 16; i++) vec1.push_back(i); int j; for(j = 0; j <= 5; j++) vec1.push_back(j); cout<<"vector vec1 data:\n"; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout<()).\n"; partial_sort(vec1.begin(), vec1.begin()+4, vec1.end(), greater()); cout<<"Partially resorted (greater) vector vec1 data:\n"; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout< #include #include #include #include using namespace std; int main() { vector vec1, vec2; list lst; vector ::iterator Iter1, Iter2; list ::iterator lst_Iter, lst_inIter; int i; for(i = 0; i <= 7; i++) vec1.push_back(i); random_shuffle(vec1.begin(), vec1.end()); lst.push_back(6); lst.push_back(5); lst.push_back(2); lst.push_back(3); lst.push_back(4); lst.push_back(1); cout<<"Vector vec1 data: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout<::iterator result1; result1 = partial_sort_copy(lst.begin(), lst.end(), vec1.begin(), vec1.begin()+3); cout<<"vector vec1 data: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout<::iterator result2; cout<<"Operation: partial_sort_copy(lst.begin(),\nlst.end(), vec2.begin(), vec2.begin()+6, greater()).\n"; result2 = partial_sort_copy(lst.begin(), lst.end(), vec2.begin(), vec2.begin()+6, greater()); cout<<"List lst into vector vec2 data: "; for(Iter2 = vec2.begin(); Iter2 != vec2.end(); Iter2++) cout<<*Iter2<<" "; cout< #include #include using namespace std; //user defined... bool great(int value) {return value >3;} int main() { vector vec1, vec2; vector ::iterator Iter1, Iter2; int i; for(i = 0; i <= 10; i++) vec1.push_back(i); cout<<"Vector vec1 data: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout< #include #include #include using namespace std; int main() { vector vec; vector ::iterator Iter1, Iter2; int i; for(i = 1; i <= 9; i++) vec.push_back(i); //Make vec a heap with default less than ordering cout<<"Operation: random_shuffle(vec.begin(), vec.end())\n"; random_shuffle(vec.begin(), vec.end()); make_heap(vec.begin(), vec.end()); cout<<"The heaped version of vector vec data:\n"; for(Iter1 = vec.begin(); Iter1 != vec.end(); Iter1++) cout<<*Iter1<<" "; cout<()).\n"; make_heap(vec.begin(), vec.end(), greater()); vec.push_back(0); push_heap(vec.begin(), vec.end(), greater()); cout<<"The greater than reheaped vec data puts the\nsmallest element first:"; for(Iter1 = vec.begin(); Iter1 != vec.end(); Iter1++) cout<<*Iter1<<" "; cout<()).\n"; pop_heap(vec.begin(), vec.end(), greater()); cout<<"The greater than heaped vec data with the smallest element\nremoved from the heap is: "; for(Iter1 = vec.begin(); Iter1 != vec.end(); Iter1++) cout<<*Iter1<<" "; cout< #include #include #include using namespace std; class CInt; ostream& operator<<(ostream& osIn, const CInt& rhs); class CInt { public: CInt(int n = 0) : m_nVal(n){} CInt(const CInt& rhs) : m_nVal(rhs.m_nVal){} CInt& operator=(const CInt& rhs) {m_nVal = rhs.m_nVal; return *this;} bool operator<(const CInt& rhs) const {return (m_nVal < rhs.m_nVal);} friend ostream& operator<<(ostream& osIn, const CInt& rhs); private: int m_nVal; }; inline ostream& operator<<(ostream& osIn, const CInt& rhs) { osIn<<"CInt("< deq1, deq2, deq3; deque::iterator d1_Iter; deq1.push_back(ci1); deq1.push_back(ci2); deq1.push_back(ci3); cout<<"deque of CInts data: "; for(d1_Iter = deq1.begin(); d1_Iter != --deq1.end(); d1_Iter++) cout<<*d1_Iter<<","; d1_Iter = --deq1.end(); cout<<*d1_Iter< vec; vector ::iterator Iter1; int i; for(i = -4; i <= 4; i++) vec.push_back(i); cout<<"\nVector vec data: "; for(Iter1 = vec.begin(); Iter1 != vec.end(); Iter1++) cout<<*Iter1<<" "; cout< #include #include #include using namespace std; class CInt; ostream& operator<<(ostream& osIn, const CInt& rhs); class CInt { public: CInt(int n = 0) : m_nVal(n){} CInt(const CInt& rhs) : m_nVal(rhs.m_nVal){} CInt& operator=(const CInt& rhs) { m_nVal = rhs.m_nVal; return *this;} bool operator<(const CInt& rhs) const { return (m_nVal < rhs.m_nVal);} friend ostream& operator<<(ostream& osIn, const CInt& rhs); private: int m_nVal; }; inline ostream& operator<<(ostream& osIn, const CInt& rhs) { osIn<<"CInt(" < deq; deque::iterator deqIter; deq.push_back(c1); deq.push_back(c2); deq.push_back(c3); cout<<"The deque of CInts data is:\n"; for(deqIter = deq.begin(); deqIter != --deq.end(); deqIter++) cout<<" "<<*deqIter<<","; deqIter = --deq.end(); cout<<" "<<*deqIter< vec; vector ::iterator Iter1; deque deq1; deque ::iterator deq1Iter; int i; for(i = 10; i <= 14; i++) vec.push_back(i); int j; for(j = 16; j <= 20; j++) deq1.push_back(j); cout<<"\nVector vec data: "; for(Iter1 = vec.begin(); Iter1 != vec.end(); Iter1++) cout<<*Iter1<<" "; cout< #include #include using namespace std; //user defined... bool great(int value) {return value >3;} int main() { vector vec1, vec2; vector ::iterator Iter1, Iter2; int i; for(i = 0; i <= 10; i++) vec1.push_back(i); cout<<"Vector vec1 data: "; for(Iter1 = vec1.begin(); Iter1 != vec1.end(); Iter1++) cout<<*Iter1<<" "; cout<