#include #include #include #include using namespace std; template bool compareLT(const T &v1, const T &v2) { return (v1 < v2); } float a = 13.3, b = 38.2; string c = "Hello", d = "Goodbye"; cout << a << " < " << b << " = " << std::boolalpha << compareLT(a, b) << endl; cout << c << " < " << d << " = " << std::boolalpha << compareLT(c, d) << endl; template class foo { private: T a; bool isDefault = true; public: foo(){}; foo(T v) { a = v; isDefault = false; } T getFoo(); void setFoo(T v) { a = v; isDefault = false; } }; template T foo::getFoo() { if (isDefault) { cerr << "Error value was not set" << endl; } return a; } // End of getFoo foo x; foo y("Hello"); foo z; x.setFoo(8); cout << "X is " << x.getFoo() << endl; cout << "Y is " << y.getFoo() << endl; cout << "Z is " << z.getFoo() << endl; template class mypair { T a, b; public: mypair(T first, T second) { a = first; b = second; } T getmax(); }; template T mypair::getmax() { T retval; retval = a > b ? a : b; return retval; } mypair myint(100, 75); cout << "Max is " << myint.getmax() << endl; mypair mystring("fish", "zebra"); cout << "Max is " << mystring.getmax() << endl; template constexpr T pi = T(3.1415926535897932385L); // variable template template T circular_area(T r) // function template { return pi * r * r; // pi is a variable template instantiation } float r1 = 3.2; circular_area(r1) double r2 = 3.2; circular_area(r2) int r3 = 3; circular_area(r3) pi template void do_n_times(FUNC fn, int n) { for(int i=0; i li{0,1,2,3,4,5}; cout << *(find_if(li.begin(), li.end(), isOdd)); // What is the * for? find_if(li.begin(), li.end(), isOdd) // what if li were empty? vector li2; find_if(li2.begin(), li2.end(), isOdd) // don't derefence this! li2.end() == find_if(li2.begin(), li2.end(), isOdd) // don't derefence this! vector li3{2,4,6,8}; li3.end() == find_if(li3.begin(), li3.end(), isOdd) // don't derefence this! do_n_times([] () { cout << "Hello!" << endl; }, 3) int i = 0; do_n_times([i] () { cout << "Hello! " << i << endl; }, 3) int i = 0; do_n_times([i] () { cout << "Hello! " << i++ << endl; }, 3) int i = 0; do_n_times([&i] () { cout << "Hello! " << i++ << endl; }, 3) i vector li4{2,4,6,8,9}; find_if(li4.begin(), li4.end(), [] (int j) { return j % 2 == 1; }) *find_if(li4.begin(), li4.end(), [] () { return true; }) deque mydeque(2, 100); // deque ::iterator it; // but use auto mydeque.push_front(200); mydeque.push_front(300); cout << "mydeque contains: "; for(auto it3 = mydeque.begin(); it3 != mydeque.end(); ++it3) cout << ' ' << *it3; cout << '\n'; std::list mylist; for(int i = 1; i <= 5; ++i) mylist.push_back(i); // 1 2 3 4 5 auto it = mylist.begin(); // std::list ::iterator ++it; mylist.insert(it, 10); mylist.insert(it, 2, 20); --it; std::vector myvector(2, 30); mylist.insert(it, myvector.begin(), myvector.end()); std::cout << "mylist contains: "; for(it = mylist.begin(); it != mylist.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; string s = "Hello", s2 = ", World", s3 = ", DeKalb"; s.size() s + s2 s2 == s3 s2 = s3; s + s2