1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| #include <iostream> #include <set> #include <map> #include <string> #include <vector> #include <numeric> #include <algorithm> using namespace std;
void test() { vector<int> num1{ 1,2,3,4,5,6,7 }; vector<double> num2{ 1.2,2.3,3.5,4.6,5.7,6.7,7.7 }; vector<string> num3{ "lic1 ", "lic2", "lic3"};
auto sum1 = accumulate(num1.begin(), num1.end(), 0, plus<>{}); auto sum2 = accumulate(num2.begin(), num2.end(), 0.0, plus<>{}); auto sum3 = accumulate(num3.begin(), num3.end(), string(), plus<>{});
cout << "sum1:" << sum1 << endl; cout << "sum2:" << sum2 << endl; cout << "sum3:" << sum3 << endl; }
template<class T, class U = less<>> void sortContainer(T& c, U&& u = U()) { sort(c.begin(), c.end(), forward<U>(u)); }
void test2() {
auto print = [](auto& con) { for (auto i : con) { cout << i << " "; } cout << endl; };
vector<int> num1{ 1,2,3,4,5,6,7 }; vector<double> num2{ 1.2,2.3,3.5,4.6,5.7,6.7,7.7 }; vector<string> num3{ "alic1", "clic2xxx", "alic3xxxxxx" };
sortContainer(num1); sortContainer(num2); sortContainer(num3); print(num1); print(num2); print(num3);
sortContainer(num1, greater<>{}); sortContainer(num2, greater<>{}); sortContainer(num3, greater<>{}); print(num1); print(num2); print(num3);
sortContainer(num1, [](double a, double b) { return a < b;}); sortContainer(num3, [](const string& a, const string& b) { return a.length() < b.length();}); print(num1); print(num3);
}
int main() { test2();
return 0; }
|