Форум программистов, компьютерный форум, киберфорум
Наши страницы

"Ругается" на оперетор побитового исключения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти наиболее и наименее удаленные точки в массиве http://www.cyberforum.ru/cpp-beginners/thread894943.html
как найти наиболее и наименее удаленные точки в массиве
C++ Расшифровать (*sk()[4] Расшифровать (*sk()) Кто может подсказать?) http://www.cyberforum.ru/cpp-beginners/thread894935.html
Имеется частичное непонимание кода C++
Задание:прочитать из файла строку символов.В данной строке каждый символ ? удвоить.Каждый символ ,стоящий перед !, заменить символом введенным с клавиатуры.Новую строку не создавать.Вывести исходную...
N последовательных членов Фибоначчи. С++ C++
Найти первые N членов Фибоначчи с помощью рекурсии и вывести их на экран. Тут и тут есть нахождение четного и n-го члена последовательности Фибоначчи. Помогите вывести N первых членов...
C++ Не изменяется элемент вектора при работе с ним по указателю http://www.cyberforum.ru/cpp-beginners/thread894890.html
Здравствуйте. Проблема следующая. Пишу свою велосипедную (на это, как на источник проблемы, не указывать) реализацию бинарного дерева для своего не менее велосипедного архиватора, использующего...
C++ Функции работы с процессами, как осуществить возвражение результата? Например void main () { int res; /* запуск exe-шника , ниже*/ } дочерний подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.06.2013, 10:48
Цитата Сообщение от Harutyunyan Посмотреть сообщение
Мне просто на собесодовании среди задач попалась и такая, надо поменять значение 2-х переменных не используя дополнительной.

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

Хоть это число, строка или даже объект.
В качестве ответа на вопрос из собеседования это окей. Для чисел есть ещё вариант со сложением и вычитанием, например. Для любых типов, боюсь, так просто не получится. В принципе можно написать функцию, которая будет трактовать любой объект как последовательность байтиков определённой длины и обменивать местами байтики. Но это работает только для так называемых POD-типов — фактически, структурок Си. Объекты Си++ могут иметь определённые свойства, которые они возможно хотели бы сохранить, поэтому их нельзя просто так перемещать в памяти. Для этого нужен некоторый контракт. Вы можете или сами потребовать у объектов определять метод swap(), или же воспользоваться контрактами языка: конструкторами копирования, перемещения, операторами присваивания и т. п.

Цитата Сообщение от Kastaneda Посмотреть сообщение
Я своими глазами видел, как компилятор из кода сделал одну (!!!) ассемблерную инструкцию, которая меняет местами значения своих аргументов. Т.е. компилятор понял, что происходит в этом коде и предложил свой лучший вариант (даже лучше ксоров).
А если обе переменные в момет обмена находятся в регистрах, то инструкций не надо вообще: просто дальше считаем, что переменная A в регистре, в котором была переменная B, и наоборот.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru