Кресты / Говнокод #27450 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
int main(void)
{
    std::string data = "HELLO WORLD!\n";
    std::transform(
        data.begin(), data.end(), 
        std::ostream_iterator<char>(std::cout, ""),
    std::bind(std::plus<char>(), std::placeholders::_1, 1));
    
    return 0;
}

А как сделать это ещё короче?

Запостил: digitalEugene digitalEugene, (Updated )

Комментарии (10) RSS

  • std::cout << data?

    А bind можно попробовать на лямбду поменять. Вроде нагляднее будет.
    Ответить
  • Экономим на спичках:

    int main(void) → int main()

    C++14:
    std::plus<char>() → std::plus<>{}

    std::string data = "HELLO WORLD!\n"; → auto data = "HELLO WORLD!\n"s;

    C++20:
    std::transform(data.begin(), data.end(), → std::ranges::transform(data,
    Ответить
      • > bind ня нужен

        Кстати, только сегод-ня узнала, что bind не контролирует количество аргументов и тупо отбрасывает лишнее:
        auto b = std::bind(std::plus<char>(), std::placeholders::_1, 1);
        std::cout << b(42, 100500, "foobar") << std::end;
        Опасная штука. Зачем они так?
        Ответить
        • А ещё эта штуковина ломается от ссылок.
          void to_upper(std::string & str)
          {
              for (auto & c : str) {
                  c = static_cast<char>(std::toupper(c));
              }
          }
          
          int main()
          {
              std::string str = "hello world";
              auto f = std::bind(to_upper, str);
              f();
              std::cout << "str = " << str << std::endl;
          }
          Ответить
    • Если неймспейсы всякие не учитывать то вообще коротко.
      int main()
      {
          ranges::transform("HELLO WORLD!\n"s,ostream_iterator<char>(cout,""),bind(plus<>{},_1,1));
          return 0;
      }
      Ответить
  • Блин, как всё-таки отступы влияют на чтение кода... Постоянно кажется, что строка 7 это новый стейтмент, а не продолжение 4-6.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8