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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Itachirull
0 / 0 / 0
Регистрация: 02.07.2014
Сообщений: 33
#1

Функция swap перестановки значений двух переменных для данных разных типов. Используйте template - C++

02.07.2014, 17:19. Просмотров 2091. Ответов 10
Метки нет (Все метки)

не могу решить ( честно говоря вообще не понимаю его ) (((((
Напишите функцию swap перестановки значений двух переменных для данных разных типов.
Используйте template(C++)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2014, 17:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция swap перестановки значений двух переменных для данных разных типов. Используйте template (C++):

Определить наибольшее из 3 чисел для данных разных типов - C++
Напишите программу, которая позволяет определить наибольшее из 3 чисел для данных разных типов. Используйте template (C++)

Сравнение переменных разных типов - C++
Здравствуйте. Столкнулся с проблемой не совпадения типов данных. Есть переменная string str, которая, к примеру, имеет значение "1245"....

Создание шаблонной функции для работы с массивами разных типов данных - C++
Здравствуйте. Столкнулся со следующей проблемой: не могу написать шаблонную функцию подсчета суммы элементов в массиве между первым и...

Ввод значений переменных различных типов - C++
Всем доброго вечера. возникла проблемка с одним задание: Ввод значений переменных различных типов(строковый, целый без запятой, целый с...

Функция приема разных типов в классе - C++
Сразу скажу что надо. Есть функция pow(), так вот она принимает разные типы данных. У меня класс хочу сделать тоже самое. Подскажите как, я...

Может ли виртуальная функция возвращать значения разных типов? - C++
Привет, форумчане! :) Столкнулся с небольшой проблемкой и интересуюсь ответом на вопрос! Может ли виртуальная функция возвращать...

10
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,375
02.07.2014, 17:27 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
template <class T>
void swap(T& _a, T& _b)
{
    T temp = _a;
    _a = _b;
    _b = temp;
}
1
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
02.07.2014, 17:39 #3
CheshireCat,
Цитата Сообщение от Itachirull Посмотреть сообщение
для данных разных типов
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
02.07.2014, 17:41 #4
Цитата Сообщение от Itachirull Посмотреть сообщение
для данных разных типов.
что то даже в голову ничего не идет
как можно поменять int double например?
0
JavaUser
70 / 70 / 15
Регистрация: 06.10.2013
Сообщений: 309
02.07.2014, 17:42 #5
Цитата Сообщение от Toshkarik Посмотреть сообщение
CheshireCat,
Сообщение от Itachirull
для данных разных типов
Вам написали уже ответ. Данная функция меняет местами две переменных любого типа
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
02.07.2014, 17:42 #6
А без разницы. Задание есть задание. Сам факт преобразования одного в другое это позволяет.
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
02.07.2014, 17:43 #7
Цитата Сообщение от JavaUser Посмотреть сообщение
Данная функция меняет местами две переменных любого типа
разные типы а не одинаковые
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
02.07.2014, 17:45 #8
JavaUser, по мне так смысл задания ближе к тому, что типы меняемых переменных должны быть разными. А может, я и не прав.
1
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,375
03.07.2014, 10:40 #9
Хм
А вот в этом случае возникает логичный вопрос: а что должно получиться в результате? Рассмотрим код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct A {
     // .... здесь очень сложная структура данных....
};
 
A a = { .... };
std::string b = "Мама мыла раму";
 
// причем, ни преобразование A -> string, ни преобразование string -> A невозможны, т.к. по сути предметной
// области не имеют смысла. 
 
template <class T1, class T2>
void swap(T1& _a, T2& _b)
{
    // ....
}
Что должно получиться в результате в переменных _a и _b ? Учтем, что ни преобразование _a -> _b, ни преобразование _b -> _a по сути предметной области не имеют смысла.

[Несколько утритуя, приведу такой пример: пусть struct A a - это набор характеристик температуры и давления на разных высотах ядерного взрыва, а string b - это набор ключевых слов и фраз для контекстного поиска в Интернете.]
1
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
03.07.2014, 10:54 #10
CheshireCat,
в соседней ветке ТС сказал что данные однотипные
Определить наибольшее из 3 чисел для данных разных типов
, а здесь почему то нет
тогда твое решение правильное (второй пост)
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
03.07.2014, 11:06 #11
Вы не правильно поняли задание. Нужен один шаблон. Все правильно.
Не для параметров разных типов, а просто данных.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2014, 11:06
Привет! Вот еще темы с ответами:

Swap() для двух массивов - C++
Всем привет! В одном уроке приводится пример использования swap для обмена элементами двух массивов: int a = { 1, 2, 3 }; int b = {...

Шаблонная функция принимает 2 аргумента разных типов и возвращает больший из них - C++
Не могу сообразить как ее правильно написать. Функция может возвратить или T1 или T2 template &lt;typename T1, typename T2&gt; ?...

Адреса двух разных переменных одинаковы - C++
Добрый день! Пытаюсь вывести в Memo1 адреса переменных: int a=5555; int b=6156; Memo1-&gt;Lines-&gt;Add(IntToStr(&amp;a)); ...

Не считает произведение разных типов данных - C++
Никак не могу разобраться, почему программа не хочет считать произведение. Вот часть кода: for (i=0;i&lt;N;i++) { p=1.0*ws/N; }...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
03.07.2014, 11:06
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru