|
0 / 0 / 0
Регистрация: 26.03.2023
Сообщений: 3
|
||||||
Заменить swap стандартной командой26.03.2023, 18:31. Показов 2768. Ответов 59
Метки нет (Все метки)
Нужно заменить swap стандартными командами
0
|
||||||
| 26.03.2023, 18:31 | |
|
Ответы с готовыми решениями:
59
Как перевести массив в шестнадцатеричную систему стандартной командой? Использование std::swap() вместо friend swap() при реализации Copy&Swap в современном С++ Заменить функцию со swap |
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
|||||||
| 26.03.2023, 21:27 | |||||||
0
|
|||||||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 26.03.2023, 21:37 | |
|
Verevkin, я даже пытаться не буду
Я так никогда не делаю и другим не советую. Это в ассемблере канает, а с C++ надо осторожно. Интуиция мне подсказывает - так нельзя
0
|
|
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
|
| 26.03.2023, 21:43 | |
|
0
|
|
|
6303 / 3025 / 1053
Регистрация: 01.06.2021
Сообщений: 11,481
|
||||||
| 26.03.2023, 21:48 | ||||||
|
Verevkin, я смоделировал такую ситуацию:
2
|
||||||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 26.03.2023, 21:53 | |
|
Royal_X, он спать ушёл
0
|
|
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
||||||||||||
| 26.03.2023, 22:04 | ||||||||||||
Признаю, что неправ. Когда я писал на Си, у меня эта функция спёрта была откуда-то из классики. И в ней такая ситуация была учтена.
![]() Но это явно не UB, а очень даже предсказуемое поведение.
0
|
||||||||||||
|
6303 / 3025 / 1053
Регистрация: 01.06.2021
Сообщений: 11,481
|
|
| 26.03.2023, 22:07 | |
|
Verevkin, сейчас вообще не компилируется
error: invalid operands of types 'void' and 'int*' to binary 'operator*' на 8 строке Как комментирую 7 строку с assert, ошибка пропадает
0
|
|
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
|||||||
| 26.03.2023, 22:09 | |||||||
1
|
|||||||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
|
| 26.03.2023, 22:10 | |
|
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 27.03.2023, 11:39 | ||
|
Что характерно, многие компиляторы знают этот прием, и насильно трансформируют машинный код в обычный обмен местами с использованием третьей переменной (регистра), чтобы повысить ILP-friendly кода. Исходя из этого, в современном мире писать так просто нет смысла.
4
|
||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 27.03.2023, 11:45 | |
|
DrOffset, а UB здесь таки есть или нет?
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 27.03.2023, 11:54 | |||||||
|
Если вот об этом варианте (и его модификациях):
(для знаковых, естественно).
1
|
|||||||
|
6303 / 3025 / 1053
Регистрация: 01.06.2021
Сообщений: 11,481
|
||||||
| 27.03.2023, 11:55 | ||||||
|
DrOffset, а будет ли переполнение (соответственно и UB) в этом варианте?
int, никакого переполнения не случилось. Но может вы мне поможете найти случай, когда будет UB.
0
|
||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 27.03.2023, 12:14 | |||
a.https://en.cppreference.com/w/... eval_order Компилятор должен (может) об этом предупреждать, кстати. Так что наверное далее этот вариант нет смысла рассматривать. Но ожидаемое поведение - это частный случай UB ![]() Unsigned integers не переполняются (для них действует арифметика по модулю), поэтому если нужны какие-то гарантии для варианта со сложением, то нужно использовать беззнаковые целые вместо знаковых.
0
|
|||
|
6303 / 3025 / 1053
Регистрация: 01.06.2021
Сообщений: 11,481
|
|
| 27.03.2023, 12:16 | |
|
DrOffset, я если честно не совсем понял. По вашей ссылке "Order of evaluation" говорится о том, что компилятор может вычислять части выражения в произвольном порядке. Тем не менее, мне кажется, это не играет никакой здесь роли. Ну и пусть вычисляет эти части в произвольном порядке, главное, чтобы соблюдал "C++ Operator Precedence".
Я именно хотел увидеть от вас конкретный случай UB с предложенным мной вариантом. Ведь, это не то же самое, что и ваш вариант, хоть с виду и там и там сложение/ вычитание.
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||
| 27.03.2023, 12:24 | |||||
|
В качестве короткого ответа, по моей ссылке есть пример:
0
|
|||||
|
6303 / 3025 / 1053
Регистрация: 01.06.2021
Сообщений: 11,481
|
|
| 27.03.2023, 12:32 | |
|
DrOffset, ладно, буду разбирать ваш ответ, чтобы понять.
Просто в https://en.cppreference.com/w/... precedence говорится, что у сложения и вычисления ассоциативность "Left-to-right". Учитывая это и то, что то, что в скобке, вычислится раньше, то думал, что вроде с порядком вычислений норм.
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||
| 27.03.2023, 12:44 | |||||
Royal_X, О, и даже далее по этой же ссылке там есть совсем уж прямое указание:
Хорошо, что теперь есть источники, где об этом пишут явно, а то раньше в таких ситуациях все время чувствую себя героем рассказа Шукшина. ---------------- ![]() Вижу вы не совсем понимаете что такое UB. Если ваш код работает как положено (как вы ждете), но при этом для этого случая в стандарте не предусмотрено гарантий такой работы, то это тоже считается за "увидеть конкретный случай UB". Потому что UB (undefined) - это отсутствие гарантий, а не какой-то конкретный спецэффект.
0
|
|||||
|
6303 / 3025 / 1053
Регистрация: 01.06.2021
Сообщений: 11,481
|
||
| 27.03.2023, 12:45 | ||
короче, этот С++ получается не дает вообще никаких гарантий, что не читаешь в документации, потом оказывается, что где-то есть оговорка, что это может так не работать. Так а как изучать язык? Напоминает законы некоторых стран, в которых приводится на несколько страниц список прав гражданина, типа что он может требовать у государства, а дальше в последней строке прописано, что государство на свое усмотрение и без всякой мотивации может отказать гражданину в реализации этих правах.
0
|
||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 27.03.2023, 12:52 | |
|
1
|
|
| 27.03.2023, 12:52 | |
|
Заменить функцию swap Чем можно заменить функцию swap?
Какой командой можна заменить msconfig ? Заменить отрицательные элементы линейного массива их модулями,не пользуясь стандартной функцией модуля Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|