Перейти к публикации
  • Сейчас на странице   Всего пользователей: 9   (0 пользователей, 9 гостей)

Hed-kun

Программирование, т. 5.1.

Рекомендованные сообщения

там нет изменения состояния строки

 

строка пихается в итератор, а он пропускается через min_element с компаратором в виде лямбды

 

и всё


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

Учитывая что мы кодили только на builder, и на турбо си :buba:

отлично запускается на билдере, без выебонов с новым стандартом и тр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;
}

Поделиться сообщением


Ссылка на сообщение

c++ таки круче жавы

нет.

ну вот смотрю я на код тинтиплз и для меня он не очевидный.

не функциональный если хочешь ;)

вот функция изменяет состояние строки. не очень очевидное поведение для строки в принципе.

в той же джаве есть синтаксис, чтобы указать, что переменная передается по ссылке и будет изменена. ref.

а тут какая-то процедура, которая изменяет состояние строки и явно не указывает на это

Ну да, конечно он для тебя неочевидный. Ты же не знаешь с++.

Для тех кто о с++ знает не понаслышке, это код достаточно очевиден. Намного очевиднее чем то, что диман написал на жаве (если отбросить название функции).

 

Чот задумался. Тинплз, а ты случаем никогда для меня код втихаря не писал?

Тебе же не надо был с++. Значит, скорее всего, нет.

Поделиться сообщением


Ссылка на сообщение

че-то я подумал, что линк настолько херовый, что нельзя заставить Min вернуть само минимальное слово, а не минимальную длину :hmm:

Либо с доп проходом, либо селектом в анонимный класс из слова и его длины еще.

 

сукпздц :fffuuu:

 

а во, можно считерить и заюзать Aggregate не по его смыслу

 

string.Split(null).Aggregate((word1, word2) => word1.Length


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

там нет изменения состояния строки

 

строка пихается в итератор, а он пропускается через min_element с компаратором в виде лямбды

 

и всё

ну вот видишь, код на столько непонятный, что я не понял, что было объявление анонимной функции.

и лямбда это способ записи функции, а не просто анонимная функция.

есть неочевидное поведение. если оно есть - то нужна синтаксическая конструкция, чтобы указать на это поведение

 

да, конечно он для тебя неочевидный. Ты же не знаешь с++.

Для тех кто о с++ знает не понаслышке, это код достаточно очевиден. Намного очевиднее чем то, что диман написал на жаве (если отбросить название функции).

ну у тебя вполне очевидный синтаксис, но не очевидное поведение.

это проблемы синтаксиса плюсов


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

че-то я подумал, что линк настолько херовый, что нельзя заставить Min вернуть само минимальное слово, а не минимальную длину :hmm:

Либо с доп проходом, либо селектом в анонимный класс из слова и его длины еще.

 

сукпздц :fffuuu:

 

а во, можно считерить и заюзать Aggregate не по его смыслу

 

string.Split(null).Aggregate((word1, word2) => word1.Length < word2.Length ? word1 : word2)

ну если строки сравнивают таким образом - то что с этим делать?

линк предоставляет набор методов, которые опираются на другие функции. если для строк сравнение определено таким образом - то что?


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

зато в руби выглядит как-то так "asd asd".words.max

я предполагаю, что как и в шарпе эта же конструкция выведет тебе не максимальное по длине слово, а просто слово, которое считается максимальным по алфавиту


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

там нет изменения состояния строки

 

строка пихается в итератор, а он пропускается через min_element с компаратором в виде лямбды

 

и всё

ну вот видишь, код на столько непонятный, что я не понял, что было объявление анонимной функции.

и лямбда это способ записи функции, а не просто анонимная функция.

есть неочевидное поведение. если оно есть - то нужна синтаксическая конструкция, чтобы указать на это поведение

Опять же, ты его не понял, потому что ты не знаешь с++.

И опять же, поведение абсолютно очевидно, если ты знаешь что такои min_element, и понимаешь Основы с++, а именно - что означает вот эта часть

(const string& left, const string& right)

 

А означает она то, что эти элементы Не будут изменены в процессе работы функции.

 

Да и в принципе, min_element стандартная функция. У нее даже внутренние ограничения на принимаемые предикаты - они не должны изменять переменные (явно по-крайней мере). Любой Нормальный с++ девелопер это знает, или, по-крайней мере, знает где посмотреть.


Изменено пользователем Tinplz

Поделиться сообщением


Ссылка на сообщение

ну если строки сравнивают таким образом - то что с этим делать?

линк предоставляет набор методов, которые опираются на другие функции. если для строк сравнение определено таким образом - то что?

то, что можно было сделать перегрузку, принимающую в себя компаратор. И сравнивать можно было любым способом, каким душа пожелает.


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

Опять же, ты его не понял, потому что ты не знаешь с++.

И опять же, поведение абсолютно очевидно, если ты знаешь что такои min_element, и понимаешь Основы с++, а именно - что означает вот эта часть

(const string& left, const string& right)

 

А означает она то, что эти элементы Не будут изменены в процессе работы функции.

что значит я не знаю? ты просто применяешь функцию к переменной. не используешь возвращаемое значение. не обозначаешь, что ты будешь использовать эту функцию где-то дальше

 

ну если строки сравнивают таким образом - то что с этим делать?

линк предоставляет набор методов, которые опираются на другие функции. если для строк сравнение определено таким образом - то что?

то, что можно было сделать перегрузку, принимающую в себя компаратор. И сравнивать можно было любым способом, каким душа пожелает.

ну практически все, если не все функции линка принимают компаратор, если он внутри сравнивают и естественно если тип IComparable используют копоратор типа, если ты ничего не предоставляешь


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение
(изменено)

del


Изменено пользователем Tinplz

Поделиться сообщением


Ссылка на сообщение

ну практически все, если не все функции линка принимают компаратор, если он внутри сравнивают и естественно если тип IComparable используют копоратор типа, если ты ничего не предоставляешь

в том то и дело, что Min и Max не принимают в себя компаратор

нету там такого

 

 

ПАЧИМУ :fffuuu:


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

Опять же, ты его не понял, потому что ты не знаешь с++.

И опять же, поведение абсолютно очевидно, если ты знаешь что такои 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(); } );

 

Вообще не понимаю твоих возражений. Да, в функции может быть несколько нагруженна логика, но она вполне читаема, и понимаема, без особых трудностей причем.


Изменено пользователем Tinplz

Поделиться сообщением


Ссылка на сообщение

ну практически все, если не все функции линка принимают компаратор, если он внутри сравнивают и естественно если тип IComparable используют копоратор типа, если ты ничего не предоставляешь

в том то и дело, что Min и Max не принимают в себя компаратор

нету там такого

 

 

ПАЧИМУ :fffuuu:

ну окей. с мином и максом я проебал, но есть ведь простое решение, чтобы это обойти в том же линке. отсортировать как хочешь и взять первый


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение
(изменено)

На таких языках как C и C++ пишутся серьезные штуки для серьезных целей, что-то типа операционных систем, баз данных, 99.99% всей электроники, сейчас бурно развивается распознование лиц/голоса, файерволлы и тд. Ну а про софтвар для теле/игровой индустрии где все написано на C/C++ я вообще молчу.

А для детей (или как их называют script kiddies) есть игрушки вроде java, C#, python и так далее.

Как-то так :nate:


Изменено пользователем Обязательное_поле

Поделиться сообщением


Ссылка на сообщение

На таких языках как C и C++ пишутся серьезные штуки для серьезных целей, что-то типа операционных систем, баз данных, 99.99% всей электроники, сейчас бурно развивается распознование лиц/голоса, файерволлы и тд. Ну а про софтвар для теле/игровой индустрии где все написано на C/C++ я вообще молчу.

А для детей (или как их называют script kiddies) есть игрушки вроде java, C#, python и так далее.

Как-то так :nate:

операционки пишутся на си, а не на сипипи. электроникам программируется на чем угодно.

игровая индустрия отлично развивалась используя всякие бейсики.

поддержа говна, которое было написано хуй знает когда естественно используется язык, на котором это говно писалось.

это никак не оправдывает средства, которые тогда использовались.


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

На таких языках как C и C++ пишутся серьезные штуки для серьезных целей, что-то типа операционных систем, баз данных, 99.99% всей электроники, сейчас бурно развивается распознование лиц/голоса, файерволлы и тд. Ну а про софтвар для теле/игровой индустрии где все написано на C/C++ я вообще молчу.

А для детей (или как их называют script kiddies) есть игрушки вроде java, C#, python и так далее.

Как-то так :nate:

операционки пишутся на си, а не на сипипи. электроникам программируется на чем угодно.

игровая индустрия отлично развивалась используя всякие бейсики.

поддержа говна, которое было написано хуй знает когда естественно используется язык, на котором это говно писалось.

это никак не оправдывает средства, которые тогда использовались.

линукс си. винда спп+си.

игровая индустрия выдает самые производительные решения как раз таки на сипипи.

Именно потому, что этот язык был создан для того, чтобы "маппится" на архитектуру/железо. Его и используют как наиболее подходящий для этого практически во всех низкоуровневых решениях.

Вся ваша поебень с виртуальными машинами, интерпретаторами и т.д. отсасывает при потребностях работы с чем либо более низким чем вызовы системного апи.

 

си вс спп - давний спор. нехуй его тут разводить, благо, знание не хватает для приведения полноценных аргументов.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...