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

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

Войти
Регистрация
Восстановить пароль
 
Maxvarlamov
1 / 1 / 0
Регистрация: 25.01.2010
Сообщений: 18
#1

Шаблонные функции - C++

22.02.2010, 17:55. Просмотров 855. Ответов 8
Метки нет (Все метки)

Помогите, пожалуйста, реализовать шаблонную функцию, которая переставляет элементы в массиве
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2010, 17:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблонные функции (C++):

Шаблонные функции - C++
1) Написать шаблонную функцию для нахождения минимального из трех передаваемых чисел (для чисел типа int, double, char). В функции...

Шаблонные функции - C++
С помощью http://ru.wikipedia.org/wiki/Шаблоны_C%2B%2B пытался написать программу с шаблонной функцией по примеру использования который там...

Шаблонные функции - C++
Помогите, пожалуйста, реализовать шаблонную функцию определения, есть ли число в массиве

Шаблонные функции - C++
Читал у Праты про шаблонные функции, и везде они описаны наподобие template <typename Any> void Swap (Any &a, Any &b) А если нужно...

Шаблонные функции - C++
Чет не получается написать шаблонную функцию. func.h template <class T> T strnstr (T str, T substr, unsigned int count) { ...

Шаблонные функции - C++
Такой код работает. #include <iostream> #include <string> #include <cstring> using namespace std; template <typename T> T...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
22.02.2010, 18:06 #2
Цитата Сообщение от Maxvarlamov Посмотреть сообщение
Помогите, пожалуйста, реализовать шаблонную функцию, которая переставляет элементы в массиве
В смысле переставляет.. то есть как?
0
Maxvarlamov
1 / 1 / 0
Регистрация: 25.01.2010
Сообщений: 18
22.02.2010, 18:08  [ТС] #3
переставляет --- меняет местами элементы
0
HIMen
4136 / 1385 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
22.02.2010, 18:11 #4
C++
1
2
3
4
5
template<class T> 
void Swap(T &a, T &b)
{
    a ^= b ^= a ^= b;
}
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
22.02.2010, 18:17 #5
Тоесть два элемента?..
Если да то вот..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
template <typename T>
void swap(T &a, T &b){
    T buff = a;
    a = b;
    b = buff;
}
int main(){
 
    int a = 10, b = 20;
    float f1 = 1112.2, f2 = 3333.33;
 
    swap(a, b);
    std::cout << a << '\n' << b << '\n';
 
    swap(f1, f2);
    std::cout << f1 << '\n' << f2 << '\n';
 
    return 0;
}
Добавлено через 2 минуты
HIMen, Не везде прокатит...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<class T> 
void Swap(T &a, T &b)
{
    a ^= b ^= a ^= b;
}
 
int main(){
 
    std::string s1 = "aaaa", s2 = "bbbbb";
 
    Swap(s1, s2); // ошибка будет...
 
    return 0;
}
1
Maxvarlamov
1 / 1 / 0
Регистрация: 25.01.2010
Сообщений: 18
22.02.2010, 18:36  [ТС] #6
Переставляет это значит a0=a4,a1=a3,a2=a2,a3=a1,a4=a0
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
22.02.2010, 18:49 #7
Переставляет это значит a0=a4,a1=a3,a2=a2,a3=a1,a4=a0
Раньше не мог сказать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
template <typename It>
void swap(It &_first, It &_last){
    It buff = _first;
    _first  = _last;
    _last   = buff; 
}
template <typename It>
void rotate_arr(It _first, It _last){
    for (; _first != _last && _first != --_last; ++_first)
        swap(*_first, *_last);
}
 
 
int main(){
 
    int arr[5] = {1,2,3,4,5};
    rotate_arr(arr, arr + 5);
 
    for(int i = 0; i < 5; ++i) std::cout << arr[i] << ' ';
 
    return 0;
}
1
Maxvarlamov
1 / 1 / 0
Регистрация: 25.01.2010
Сообщений: 18
22.02.2010, 19:18  [ТС] #8
А как сделать так, чтобы можно было вводить и целые, и вещественные (double) значения
0
insideone
Модератор
Автор FAQ
3639 / 918 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
22.02.2010, 19:49 #9
А как сделать так, чтобы можно было вводить и целые, и вещественные (double) значения
Вводить можно что угодно - а вот храниться должно все в одном массиве. Т.к. int не может хранить значения после запатой заводите массив double - те числа которые вы введете целочисленными просто будут иметь нули после запятой.

C++
1
2
3
4
5
6
7
#define N 7
int main(){
    double x[N];
    for (int i = 0; i < N; i++)
        cin >> x[i];
return 0;
}
Если хочется чтобы числа содержащие только целую часть выводились без "хвоста" можно делать проверку на целочисленность и если она пройдена
C++
1
int temp = x[i]; cout << temp;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2010, 19:49
Привет! Вот еще темы с ответами:

Шаблонные функции - C++
Любимой нужно, это свято... Поэтому прошу помощи... Перегрузить операторы &gt;, &lt;, == для класса Книга относительно сравнения года...

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

Шаблонные функции - C++
Доброго времени суток. Есть шаблонная функция(двоичный сумматор прямого кода): template &lt;class T&gt; void Main_register::badc(T *regist, T...

Шаблонные функции в C++ - C++
Каждый раз когда вижу код, который должен быть простым и понятным, я понимаю его немного хуже. Вот наш код: template &lt;typename T,...


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

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

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