fork download
  1. #include <algorithm>
  2. #include <functional>
  3. #include <iostream>
  4. #include <iterator>
  5. #include <random>
  6. #include <vector>
  7.  
  8. int main()
  9. {
  10. using v_str = std::vector<std::string>;
  11. auto print_v = [](const v_str &v)
  12. {
  13. std::copy(v.cbegin(), v.cend(), std::ostream_iterator<std::string>(std::cout, "\n"));
  14. std::cout << "***************\n";
  15. };
  16. auto lessLength = [](const std::string &lhs, const std::string &rhs)
  17. {
  18. return lhs.length() < rhs.length();
  19. };
  20.  
  21. std::uniform_int_distribution<char> charDist('a', 'z');
  22. std::uniform_int_distribution<int> lengthDist(1, 15);
  23. std::default_random_engine gen{ std::random_device()() };
  24. std::function<char()> charGen = std::bind(charDist, gen);
  25. std::function<int()> lengthGen = std::bind(lengthDist, gen);
  26.  
  27. const size_t numWords = 7;
  28. v_str words(numWords);
  29. std::generate(words.begin(), words.end(), [&charGen, &lengthGen]
  30. {
  31. std::string result;
  32. std::generate_n(std::back_inserter(result), lengthGen(), charGen);
  33. return result;
  34. });
  35.  
  36. print_v(words);
  37. words.erase(std::min_element(words.begin(), words.end(), lessLength));
  38. print_v(words);
  39. }
Success #stdin #stdout 0s 3276KB
stdin
Standard input is empty
stdout
yukpdvnsujdhdnq
yukpdvnsujdhd
yukpdvn
yukpdvnsu
yuk
yukpdvnsujdhd
yukpdvns
***************
yukpdvnsujdhdnq
yukpdvnsujdhd
yukpdvn
yukpdvnsu
yukpdvnsujdhd
yukpdvns
***************