#include #include #include using namespace std; typedef vector::iterator VPosT; void Print(const vector & letter); void DoFind(const vector & letters, char target); bool MyComp(char a, char b); void DoBinarySearch(const vector & letters, char target); int main() { vector letters = {'A','B','C','D', 'E', 'F', 'G', 'H'}; VPosT i = letters.begin() +2; VPosT j = i+3; cout << "i points to " << *i << endl; cout << "j points to " << *j << endl; letters.erase(i); cout << "After letters.erase(i)" << endl; // i should be invalid, but it is not. cout << "i is now pointing to " << *i << " the vector is "; Print(letters); cout << endl; // J should be invalid, but it is not. cout << "j points to " << *j << endl; cout << endl; cout << endl; cout << "Starting with: " ; Print(letters); cout << endl << endl; i = letters.begin()+3; j = letters.begin()+5; cout << "Erasing starting at " << *i << " and ending at " << *j << endl; letters.erase(i,j); // letters.erase(letters.begin(), letters.end()); // letters.erase(begin(letters), end(letters)); // letters.clear(); cout << endl << endl; vector avec = letters; Print(avec); avec.erase(avec.begin(), avec.begin()+3); Print(avec); cout << endl << endl; Print(letters); cout << endl << endl; i = letters.begin()+3; cout << "Inserting 1 at " << * i << endl; letters.insert(i,'1'); Print(letters); cout << endl << endl; i = letters.begin()+2; cout << "Inserting 2 at " << * i << " with count 4" << endl; letters.insert(i, 4, '2'); Print(letters); cout << endl << endl; vector otherLetters = {'a', 'b', 'c', 'd'}; cout << "Inserting "; Print(otherLetters); cout << endl; i = letters.begin()+7; cout << " at " << *i << endl; letters.insert(i, otherLetters.begin(), otherLetters.end()); Print(letters); cout << endl; vector words1{"hello", "world","how","are","you"}; if( find(begin(words1), end(words1), "world") != end(words1)) { cout << "world is in the array" << endl; } DoFind(letters, 'A'); DoFind(letters,'Z'); DoFind(letters, '2'); cout << endl << endl; cout << "Before Sort " << endl; Print(letters); cout << endl << endl; cout << "After sort, (default <)" << endl; sort(letters.begin(), letters.end()); Print(letters); cout << endl << endl; cout << "After sort, (using MyComp)" << endl; sort(letters.begin(), letters.end(), MyComp); Print(letters); cout << endl << endl; sort(letters.begin(), letters.end()); DoBinarySearch(letters, 'A'); DoBinarySearch(letters, '1'); DoBinarySearch(letters, 'X'); cout << endl << endl; string a="elephant", b = "mouse"; cout << "max(3,5) = " << max(3,5) << endl; cout << "max(5,3) = " << max(5,3) << endl; cout << "min(" << a << ", " << b << ") = " << min(a,b) << endl; cout << "max(" << a << ", " << b << ") = " << max(a,b) << endl; cout << "clamp (.3, 0, 1) = " << clamp(.3, 0.0, 1.0) << endl; cout << "clamp (3, 0, 1) = " << clamp(3.0, 0.0, 1.0) << endl; cout << "clamp (-3, 0, 1) = " << clamp(-3.0, 0.0, 1.0) << endl; cout << endl << endl; vector words {"Alpha", "Beta", "Delta"}; do { for(auto x: words) { cout << x << " "; } cout << endl; } while (next_permutation(words.begin(), words.end()) ) ; cout << endl; Print(letters); cout << endl; cout << "Off to Buffalo" << endl; srand(static_cast (time(nullptr))); random_shuffle(letters.begin(), letters.end()); Print(letters); cout << endl; reverse(begin(letters), end(letters)); Print(letters); cout << endl; return 0; } void DoBinarySearch(const vector & letters, char target) { cout << "Searching " ; Print(letters); cout << " for " << target << endl; if (binary_search(letters.begin(), letters.end(), target)) { cout << " FOUND " << endl; } else { cout << " NOT found " << endl; } return; } void Print(const vector & letters){ bool first = true; cout << "{"; for(auto x: letters) { if (first) { first= false; } else { cout << ", "; } cout << x; } cout << "}"; } void DoFind(const vector & letters, char target){ vector::const_iterator i; bool found = false; Print(letters); cout << endl; i = find(letters.begin(), letters.end(), target); while (i != letters.end() ) { found = true; cout << target << " fond at " << i-letters.begin() << endl; i++; i = find(i, letters.end(), target); } if (not found) { cout << target << " is not in the vector." << endl; } cout << endl; return; } bool MyComp(char a, char b){ return a > b; }