Kant #2681 12 декабря 2013 там нет изменения состояния строки строка пихается в итератор, а он пропускается через min_element с компаратором в виде лямбды и всё Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Tinplz #2682 12 декабря 2013 Учитывая что мы кодили только на builder, и на турбо си отлично запускается на билдере, без выебонов с новым стандартом и тр1: #include <iostream> #include <string> #include <sstream> #include <vector> #include <algorithm> #include <iterator> using namespace std; int main() { string str = "asdfasd ff sdsadassd qewr1 34324"; istringstream iss(str); struct CompareLength { inline bool operator() (const string& left, const string& right) { return left.length() < right.length(); } }; cout << *min_element(istream_iterator<string>(iss), istream_iterator<string>(), CompareLength()); return 0; } Поделиться сообщением Ссылка на сообщение
Двапой #2683 12 декабря 2013 Чот задумался. Тинплз, а ты случаем никогда для меня код втихаря не писал? Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
Tinplz #2684 12 декабря 2013 c++ таки круче жавынет.ну вот смотрю я на код тинтиплз и для меня он не очевидный.не функциональный если хочешь ;)вот функция изменяет состояние строки. не очень очевидное поведение для строки в принципе.в той же джаве есть синтаксис, чтобы указать, что переменная передается по ссылке и будет изменена. ref.а тут какая-то процедура, которая изменяет состояние строки и явно не указывает на этоНу да, конечно он для тебя неочевидный. Ты же не знаешь с++.Для тех кто о с++ знает не понаслышке, это код достаточно очевиден. Намного очевиднее чем то, что диман написал на жаве (если отбросить название функции). Чот задумался. Тинплз, а ты случаем никогда для меня код втихаря не писал?Тебе же не надо был с++. Значит, скорее всего, нет. Поделиться сообщением Ссылка на сообщение
Kant #2685 12 декабря 2013 че-то я подумал, что линк настолько херовый, что нельзя заставить Min вернуть само минимальное слово, а не минимальную длину Либо с доп проходом, либо селектом в анонимный класс из слова и его длины еще. сукпздц а во, можно считерить и заюзать Aggregate не по его смыслу string.Split(null).Aggregate((word1, word2) => word1.Length Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Двапой #2686 12 декабря 2013 зато в руби выглядит как-то так "asd asd".words.max Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
rubish #2687 12 декабря 2013 там нет изменения состояния строки строка пихается в итератор, а он пропускается через min_element с компаратором в виде лямбды и всёну вот видишь, код на столько непонятный, что я не понял, что было объявление анонимной функции. и лямбда это способ записи функции, а не просто анонимная функция.есть неочевидное поведение. если оно есть - то нужна синтаксическая конструкция, чтобы указать на это поведение да, конечно он для тебя неочевидный. Ты же не знаешь с++.Для тех кто о с++ знает не понаслышке, это код достаточно очевиден. Намного очевиднее чем то, что диман написал на жаве (если отбросить название функции).ну у тебя вполне очевидный синтаксис, но не очевидное поведение.это проблемы синтаксиса плюсов Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
Двапой #2688 12 декабря 2013 ох, вы все превращаете в холивар я в прочем тоже... Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
rubish #2689 12 декабря 2013 че-то я подумал, что линк настолько херовый, что нельзя заставить Min вернуть само минимальное слово, а не минимальную длину Либо с доп проходом, либо селектом в анонимный класс из слова и его длины еще. сукпздц а во, можно считерить и заюзать Aggregate не по его смыслу string.Split(null).Aggregate((word1, word2) => word1.Length < word2.Length ? word1 : word2)ну если строки сравнивают таким образом - то что с этим делать? линк предоставляет набор методов, которые опираются на другие функции. если для строк сравнение определено таким образом - то что? Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
Kant #2690 12 декабря 2013 зато в руби выглядит как-то так "asd asd".words.maxя предполагаю, что как и в шарпе эта же конструкция выведет тебе не максимальное по длине слово, а просто слово, которое считается максимальным по алфавиту Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Tinplz #2691 12 декабря 2013 (изменено) там нет изменения состояния строки строка пихается в итератор, а он пропускается через min_element с компаратором в виде лямбды и всёну вот видишь, код на столько непонятный, что я не понял, что было объявление анонимной функции.и лямбда это способ записи функции, а не просто анонимная функция.есть неочевидное поведение. если оно есть - то нужна синтаксическая конструкция, чтобы указать на это поведениеОпять же, ты его не понял, потому что ты не знаешь с++.И опять же, поведение абсолютно очевидно, если ты знаешь что такои min_element, и понимаешь Основы с++, а именно - что означает вот эта часть(const string& left, const string& right) А означает она то, что эти элементы Не будут изменены в процессе работы функции. Да и в принципе, min_element стандартная функция. У нее даже внутренние ограничения на принимаемые предикаты - они не должны изменять переменные (явно по-крайней мере). Любой Нормальный с++ девелопер это знает, или, по-крайней мере, знает где посмотреть. Изменено 12 декабря 2013 пользователем Tinplz Поделиться сообщением Ссылка на сообщение
Kant #2692 12 декабря 2013 ну если строки сравнивают таким образом - то что с этим делать?линк предоставляет набор методов, которые опираются на другие функции. если для строк сравнение определено таким образом - то что?то, что можно было сделать перегрузку, принимающую в себя компаратор. И сравнивать можно было любым способом, каким душа пожелает. Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
rubish #2693 12 декабря 2013 Опять же, ты его не понял, потому что ты не знаешь с++.И опять же, поведение абсолютно очевидно, если ты знаешь что такои min_element, и понимаешь Основы с++, а именно - что означает вот эта часть(const string& left, const string& right) А означает она то, что эти элементы Не будут изменены в процессе работы функции.что значит я не знаю? ты просто применяешь функцию к переменной. не используешь возвращаемое значение. не обозначаешь, что ты будешь использовать эту функцию где-то дальше ну если строки сравнивают таким образом - то что с этим делать?линк предоставляет набор методов, которые опираются на другие функции. если для строк сравнение определено таким образом - то что?то, что можно было сделать перегрузку, принимающую в себя компаратор. И сравнивать можно было любым способом, каким душа пожелает.ну практически все, если не все функции линка принимают компаратор, если он внутри сравнивают и естественно если тип IComparable используют копоратор типа, если ты ничего не предоставляешь Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
Tinplz #2694 12 декабря 2013 (изменено) del Изменено 12 декабря 2013 пользователем Tinplz Поделиться сообщением Ссылка на сообщение
Kant #2695 12 декабря 2013 ну практически все, если не все функции линка принимают компаратор, если он внутри сравнивают и естественно если тип IComparable используют копоратор типа, если ты ничего не предоставляешьв том то и дело, что Min и Max не принимают в себя компараторнету там такого ПАЧИМУ Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Tinplz #2696 12 декабря 2013 (изменено) Опять же, ты его не понял, потому что ты не знаешь с++.И опять же, поведение абсолютно очевидно, если ты знаешь что такои min_element, и понимаешь Основы с++, а именно - что означает вот эта часть(const string& left, const string& right) А означает она то, что эти элементы Не будут изменены в процессе работы функции.что значит я не знаю? ты просто применяешь функцию к переменной. не используешь возвращаемое значение. не обозначаешь, что ты будешь использовать эту функцию где-то дальше Ну да, потому что это решение для конкртетно этой задачи.Если бы я хотел объявить эту функцию и использовать ее дальше, то я бы явно написал function< bool(const string&,const string&)> compare_string_lengthes = [] (const string& left, const string& right){ return left.length() < right.length(); } ; ну или auto compare_string_lengthes = [] (const string& left, const string& right){ return left.length() < right.length(); } ; Если бы я хотел сохранить значение min_element - то я бы его сохранил const auto pMinimalLengthWord = *min_element(istream_iterator<string>(iss), istream_iterator<string>(), [] (const string& left, const string& right){ return left.length() < right.length(); } ); Вообще не понимаю твоих возражений. Да, в функции может быть несколько нагруженна логика, но она вполне читаема, и понимаема, без особых трудностей причем. Изменено 12 декабря 2013 пользователем Tinplz Поделиться сообщением Ссылка на сообщение
rubish #2697 12 декабря 2013 ну практически все, если не все функции линка принимают компаратор, если он внутри сравнивают и естественно если тип IComparable используют копоратор типа, если ты ничего не предоставляешьв том то и дело, что Min и Max не принимают в себя компараторнету там такого ПАЧИМУ ну окей. с мином и максом я проебал, но есть ведь простое решение, чтобы это обойти в том же линке. отсортировать как хочешь и взять первый Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
Обязательное_поле #2698 12 декабря 2013 (изменено) На таких языках как C и C++ пишутся серьезные штуки для серьезных целей, что-то типа операционных систем, баз данных, 99.99% всей электроники, сейчас бурно развивается распознование лиц/голоса, файерволлы и тд. Ну а про софтвар для теле/игровой индустрии где все написано на C/C++ я вообще молчу.А для детей (или как их называют script kiddies) есть игрушки вроде java, C#, python и так далее.Как-то так Изменено 12 декабря 2013 пользователем Обязательное_поле Поделиться сообщением Ссылка на сообщение
rubish #2699 12 декабря 2013 На таких языках как C и C++ пишутся серьезные штуки для серьезных целей, что-то типа операционных систем, баз данных, 99.99% всей электроники, сейчас бурно развивается распознование лиц/голоса, файерволлы и тд. Ну а про софтвар для теле/игровой индустрии где все написано на C/C++ я вообще молчу.А для детей (или как их называют script kiddies) есть игрушки вроде java, C#, python и так далее.Как-то так операционки пишутся на си, а не на сипипи. электроникам программируется на чем угодно.игровая индустрия отлично развивалась используя всякие бейсики. поддержа говна, которое было написано хуй знает когда естественно используется язык, на котором это говно писалось.это никак не оправдывает средства, которые тогда использовались. Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
Tinplz #2700 13 декабря 2013 На таких языках как C и C++ пишутся серьезные штуки для серьезных целей, что-то типа операционных систем, баз данных, 99.99% всей электроники, сейчас бурно развивается распознование лиц/голоса, файерволлы и тд. Ну а про софтвар для теле/игровой индустрии где все написано на C/C++ я вообще молчу.А для детей (или как их называют script kiddies) есть игрушки вроде java, C#, python и так далее.Как-то так операционки пишутся на си, а не на сипипи. электроникам программируется на чем угодно.игровая индустрия отлично развивалась используя всякие бейсики.поддержа говна, которое было написано хуй знает когда естественно используется язык, на котором это говно писалось.это никак не оправдывает средства, которые тогда использовались.линукс си. винда спп+си.игровая индустрия выдает самые производительные решения как раз таки на сипипи. Именно потому, что этот язык был создан для того, чтобы "маппится" на архитектуру/железо. Его и используют как наиболее подходящий для этого практически во всех низкоуровневых решениях.Вся ваша поебень с виртуальными машинами, интерпретаторами и т.д. отсасывает при потребностях работы с чем либо более низким чем вызовы системного апи. си вс спп - давний спор. нехуй его тут разводить, благо, знание не хватает для приведения полноценных аргументов. Поделиться сообщением Ссылка на сообщение