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

Есть некоторые строчки кода, которые я не понимаю - C++

Восстановить пароль Регистрация
 
Flashik66
15 / 7 / 7
Регистрация: 05.11.2012
Сообщений: 119
15.11.2012, 00:44     Есть некоторые строчки кода, которые я не понимаю #1
Добрый день. У меня есть код программ но есть некоторые строчки кода которые я не понимаю. Помогите разобраться.

Как бы что тут делается?
template<typename T> void swap(T& n1, T& n2)
{ T _tn = n1; n1 = n2; n2 = _tn; }
И вот тут то что выделено..

for (int q = 0; q < N; q++)
{
int min = q;
for (int s = q+1; s < N; s++)
if (A[s] < A[min]) min = s;

swap<double>(A[q],A[min]);
}
Спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
15.11.2012, 00:47     Есть некоторые строчки кода, которые я не понимаю #2
Цитата Сообщение от Flashik66 Посмотреть сообщение
Как бы что тут делается?
n1 становится равным n2, а n2 становится равным n1.
А вообще почитайте про шаблоны.

Цитата Сообщение от Flashik66 Посмотреть сообщение
И вот тут то что выделено..
дорога ведет к изучению шаблонов.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.11.2012, 00:51     Есть некоторые строчки кода, которые я не понимаю #3
Ты скорее ещё не знаешь шаблоны и stl. Не удивительно, в большинстве курсов С++ их оставляют напоследок или даже не упоминают бывает.
Это шаблон функции обмена двух переменных. Объявление template<typename T>, значит, что это шаблон, в который вместо Т можно подставить любое имя типа. Вызывая swap<double>(A[q],A[min]); ты просишь компилятор создать функцию, согласно шаблону подставив вместо Т double,
И получается, что этот код аналогичен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void swap(double& n1, double& n2)
{ 
  double _tn = n1;
  n1 = n2;
  n2 = _tn; 
}
///...
for (int q = 0; q < N; q++)
{
  int min = q;
  for (int s = q+1; s < N; s++)
    if (A[s] < A[min]) min = s;
  swap(A[q],A[min]);
}
Flashik66
15 / 7 / 7
Регистрация: 05.11.2012
Сообщений: 119
15.11.2012, 22:50  [ТС]     Есть некоторые строчки кода, которые я не понимаю #4
Спасибо большое!
Yandex
Объявления
15.11.2012, 22:50     Есть некоторые строчки кода, которые я не понимаю
Ответ Создать тему
Опции темы

Текущее время: 22:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru