Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Удалено 616072

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

есть ли способ проще, а главное быстрее считывать неизвестное количество интов, введенных в консоль и разделенных при помощи пробела?

Aor9TMl.png

kure534

Пользователь

Регистрация: 09.07.2018

Сообщения: 5618

Рейтинг: 4226

kure534

Регистрация: 09.07.2018

Сообщения: 5618

Рейтинг: 4226

офк да, юзай пайтон AYAYA.png?1574635125

list(map(int, input().split())) annie2.png?1574587138

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Удалено 616072

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

kure534 сказал(а):

офк да, юзай пайтон AYAYA.png?1574635125

list(map(int, input().split())) annie2.png?1574587138

Нажмите, чтобы раскрыть...

мне скачивать петухон чтоб элементарные задачи решались по 30 лет?

saw_tooth

Пользователь

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

saw_tooth

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

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

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Удалено 616072

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

saw_tooth сказал(а):

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

Нажмите, чтобы раскрыть...

мой вариант самый быстрый? мне важно найти именно самый быстрый из возможных

sentinaxe

Пользователь

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

sentinaxe

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

Изначально читать не гетлайном, а cin'ом и смещением. Надеюсь смог донести идею, с телефона просто лень писать код

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Удалено 616072

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

sentinaxe сказал(а):

Изначально читать не гетлайном, а cin'ом и смещением. Надеюсь смог донести идею, с телефона просто лень писать код

Нажмите, чтобы раскрыть...

как мне работать std::cin>> jopa >> nejopa>> ..... >> с последовательностью, которая может быть 3 числа, а может быть 3333333333333333 чисел?

saw_tooth

Пользователь

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

saw_tooth

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

NoMercyPWNZ сказал(а):

мой вариант самый быстрый? мне важно найти именно самый быстрый из возможных

Нажмите, чтобы раскрыть...

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

Можно заморочится и через getс забирать, всё до пробела.

sentinaxe

Пользователь

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

sentinaxe

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

NoMercyPWNZ сказал(а):

как мне работать std::cin>> jopa >> nejopa>> ..... >> с последовательностью, которая может быть 3 числа, а может быть 3333333333333333 чисел?

Нажмите, чтобы раскрыть...

while

kekmachine

Пользователь

Регистрация: 14.08.2018

Сообщения: 1507

Рейтинг: 554

kekmachine

Регистрация: 14.08.2018

Сообщения: 1507

Рейтинг: 554

NoMercyPWNZ сказал(а):

мне скачивать петухон чтоб элементарные задачи решались по 30 лет?

Нажмите, чтобы раскрыть...

Я думаю сплит есть в любом нормальном яп, так что удачи pepeshapka.png

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Удалено 616072

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

sentinaxe сказал(а):

while

Нажмите, чтобы раскрыть...

с вайлом проблема состоит в том, что когда я вбиваю рандомный набор чисел (4 2 5 2 5 2 9 и т.д.) сразу в консоль (ctrl+C ctrl+V прямо в консоль), то вайл будет ждать ещё 1 ввод чего угодно, но не числа чтоб закончить свою работу

kekmachine сказал(а):

Я думаю сплит есть в любом нормальном яп, так что удачи pepeshapka.png

Нажмите, чтобы раскрыть...

чем сплит в данный момент отличается по скорости от того, что я посимвольно ищу пробелы? 

sentinaxe

Пользователь

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

sentinaxe

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

NoMercyPWNZ сказал(а):

с вайлом проблема состоит в том, что когда я вбиваю рандомный набор чисел (4 2 5 2 5 2 9 и т.д.) сразу в консоль (ctrl+C ctrl+V прямо в консоль), то вайл будет ждать ещё 1 ввод чего угодно, но не числа чтоб закончить свою работу

Нажмите, чтобы раскрыть...

ну я хз ты хочешь и рыбку съесть и чтобы в три строчки за тебя софт все сосчитал. ctrl+z отменяет ожидание ввода после строки, если уж на то пошло

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Удалено 616072

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

sentinaxe сказал(а):

ну я хз ты хочешь и рыбку съесть и чтобы в три строчки за тебя софт все сосчитал. ctrl+z отменяет ожидание ввода после строки, если уж на то пошло

Нажмите, чтобы раскрыть...

автоматическое тестирование не сможет ctrl+Z нажать

sentinaxe

Пользователь

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

sentinaxe

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

NoMercyPWNZ сказал(а):

автоматическое тестирование не сможет ctrl+Z нажать

Нажмите, чтобы раскрыть...

придумай терминирующий символ

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Удалено 616072

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

sentinaxe сказал(а):

придумай терминирующий символ

Нажмите, чтобы раскрыть...

на вход дается "число число число .... число" и ничего более, автоматическое тестирование не обмануть (и лучше вообще не пытаться иначе мне хуже будет)

saw_tooth

Пользователь

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

saw_tooth

Регистрация: 20.08.2013

Сообщения: 5550

Рейтинг: 3286

NoMercyPWNZ сказал(а):
то вайл будет ждать ещё 1 ввод чего угодно, но не числа чтоб закончить свою работу
Нажмите, чтобы раскрыть...

do/while в помощь

 

kekmachine

Пользователь

Регистрация: 14.08.2018

Сообщения: 1507

Рейтинг: 554

kekmachine

Регистрация: 14.08.2018

Сообщения: 1507

Рейтинг: 554

NoMercyPWNZ сказал(а):

чем сплит в данный момент отличается по скорости от того, что я посимвольно ищу пробелы? 

Нажмите, чтобы раскрыть...

Это плюсы наверное, видимо отличный язык, где каждую микрофункцию надо в ручную реализовывать roflanLico.png Насчет отличается, там много нюансов может быть для каждого яп, но я доверяю дядькам из микрософта которые пишут готовые функции(для шарпа например).

sentinaxe

Пользователь

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

sentinaxe

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

NoMercyPWNZ сказал(а):

на вход дается "число число число .... число" и ничего более, автоматическое тестирование не обмануть (и лучше вообще не пытаться иначе мне хуже будет)

Нажмите, чтобы раскрыть...

Попробуй вот так

string input;

while (getline(cin, input, ' '))

{

твой пушбек

}

Berglol

Пользователь

Регистрация: 20.09.2013

Сообщения: 934

Рейтинг: 1736

Berglol

Регистрация: 20.09.2013

Сообщения: 934

Рейтинг: 1736

NoMercyPWNZ сказал(а):

мой вариант самый быстрый? мне важно найти именно самый быстрый из возможных

Нажмите, чтобы раскрыть...

Зависит от компилятора и архитектуры. Если скорость прямо очень-очень критична - компиль с разными флагами, разными компиляторами и чекай асм-код каким-нибудь отладчиком вроде OllyDbg или x96dbg

Также в таких ситуациях очень помогает этот сайтец https://godbolt.org/

Но это надо будет очень и очень долго считать и анализировать.

Также стоит добавить, что жонглирование порядком/комбинациями if-ов и циклов, а также различными вариантами циклов (for/while/do while) абсолютно не принесет пользы, т.к. компиляторы уже достаточно умны, чтобы понять цель и составить максимально (ну в большинстве случаев) оптимальный код 

А, ну еще можно добавить, что раз уже речь о быстродействии - std::string после опред. кол-ва символов (вроде около 20) начинает работать с кучей, а не стеком, std::vector - аналогично работает с кучей.

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

Hit Girl

Пользователь

Регистрация: 10.12.2014

Сообщения: 4216

Рейтинг: 2061

Hit Girl

Регистрация: 10.12.2014

Сообщения: 4216

Рейтинг: 2061

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

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Удалено 616072

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Berglol сказал(а):

А, ну еще можно добавить, что раз уже речь о быстродействии - std::string после опред. кол-ва символов (вроде около 20) начинает работать с кучей, а не стеком, std::vector - аналогично работает с кучей.

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

Нажмите, чтобы раскрыть...

в этом и есть небольшая проблема.

с одной стороны вектор и стринг жрут намного больше чем эррей и массив указателей на чар, но с другой стороны я изначально не знаю сколько у меня будет элементов и потому объявить условный массив на 100 элементов и массив чаров на 200 я не могу (ибо их может быть 1000 и 2000 соответственно), а плюсы динамически не дают присвоить в коде их размерность и требуют конст значение (которое я не узнаю пока не будет введена вся последовательность) doubt.gif

и вообще есть ли смысл менять все типы данных на auto в коде? память будет жраться больше или наоборот меньше?

Berglol

Пользователь

Регистрация: 20.09.2013

Сообщения: 934

Рейтинг: 1736

Berglol

Регистрация: 20.09.2013

Сообщения: 934

Рейтинг: 1736

NoMercyPWNZ сказал(а):

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

Нажмите, чтобы раскрыть...

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

 

Вопрос стоит в том, на сколько важен мизерный прирост (которого может и не быть, т.к. плюсы и стандартные контейнеры тоже не дураками сделаны). 

 

NoMercyPWNZ сказал(а):

есть ли смысл менять все типы данных на auto в коде? память будет жраться больше или наоборот меньше?

Нажмите, чтобы раскрыть...

auto - не тип данных, а ключевое слово, которое заменяется на соотв. тип, такой же, как у инициализирующего значения и применяется оно исключительно для удобства (например при переборе итераторов, чтобы не писать дрочево типа std::unordered_map< std::vector < int > >::iterator и т.д.)

 

Подводя итоги: в данной ситуации мне кажется, stl контейнеры + оптимизация компилятора дадут неплохой результат. Написание своего аллокатора и контейнеров - только сожрут кучу времени и, если и дадут небольшой прирост скорости на одной архитектуре, - они обязательно похоронят эту скорость на других, потому что оптимизация привязывается к конкретному железу.

sentinaxe

Пользователь

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

sentinaxe

Регистрация: 30.07.2017

Сообщения: 753

Рейтинг: 654

Делать лист на указателях, как в универчике учат. Самое оно для неизвестного количества элементов pepecool.png

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

Удалено 616072

Регистрация: 21.02.2016

Сообщения: 0

Рейтинг: -3

sentinaxe сказал(а):

Делать лист на указателях, как в универчике учат. Самое оно для неизвестного количества элементов pepecool.png

Нажмите, чтобы раскрыть...

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