#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); bool LenComp(string a, string b) { return a.size() > b.size(); } bool MyComp1(string a, string b){ return a > b; } 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); cout << "The result is " << endl; Print(letters); cout << endl << endl; // letters.erase(letters.begin(), letters.end()); // letters.erase(begin(letters), end(letters)); // letters.clear(); // cout << "The result of a clear is " << endl; // Print(letters); // cout << endl << endl; cout << endl << endl; vector avec = letters; cout << "A vector "<< endl; Print(avec); cout << endl; cout << "avec.erase(avec.begin(), avec.begin()+3); " << endl; avec.erase(avec.begin(), avec.begin()+3); Print(avec); cout << endl << endl; cout << "Starting with " << endl; Print(letters); cout << endl << endl; i = letters.begin()+3; cout << "Inserting 1 at " << * i << endl; cout << "letters.insert(i,'1'); " << endl; letters.insert(i,'1'); cout << "The result is " << endl; Print(letters); cout << endl << endl; i = letters.begin()+2; cout << "Inserting 2 at " << * i << " with count 4" << endl; cout << " letters.insert(i, 4, '2'); " << 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; cout << "letters.insert(i, otherLetters.begin(), otherLetters.end()); " << endl; letters.insert(i, otherLetters.begin(), otherLetters.end()); Print(letters); cout << endl; cout << endl; vector words1{"hello", "world","how","are","you"}; cout << "Searching for world in {" ; for (auto x : words1) { cout < words {"Alpha", "Beta", "Delta", "Gamma"}; do { for(auto x: words) { cout << x << " "; } cout << endl; } while (next_permutation(words.begin(), words.end()) ) ; cout << endl; cout << "Letters holds " << 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; cout << endl; cout << "Searching for " << target << " in " << endl; 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; }