Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Whoops
21 / 7 / 3
Регистрация: 29.08.2014
Сообщений: 78
Завершенные тесты: 1
#1

Итераторы в шаблонной функции - C++

22.06.2016, 21:47. Просмотров 183. Ответов 4
Метки нет (Все метки)

Здравствуйте, пишу программу, в ознакомительных целях с шаблонными функциями. У меня есть функция, вычисляющая среднее арифметическое. Как её описать, чтобы в функцию передавались итераторы начала и конца контейнеров? Неработающий код прилагается:
Кликните здесь для просмотра всего текста
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <ctime>
#include <vector>
 
using namespace std;
 
template <typename Iter>
double average(typename Iter begin, typename Iter end);
 
int main() {
 
    setlocale(LC_CTYPE, "Rus");
    srand(time(0));
 
    vector<double> vec;
    int vec_size;
 
    cin >> vec_size;
    
    for (size_t i = 0; i < vec_size; ++i){
        int val = rand() % 10;
        vec.push_back(val);
        cout << vec[i] << " ";      
    }
    
    cout << endl << "Среднее арифметическое = " <<  average(vec.begin(), vec.end()) << endl;
    
    return 0;
}
 
template <typename Iter>
double average(typename Iter begin, typename Iter end){
    int count = 0;
    double sum = 0;
    auto it = begin;
 
    while (begin != end){
        sum += *it;
        ++it; ++count;
    }
 
    return sum / count;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2016, 21:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Итераторы в шаблонной функции (C++):

Объявление шаблонной функции
Здравствуйте, встретил в учебнике это: template &lt;typename Type, int size&gt;...

Вызов шаблонной функции
Здравствуйте. Есть такой код: template&lt;class _Ty1, class _Ty2&gt; inline...

Создание шаблонной функции
Создать шаблонную функцию, изменяющий порядок элементов таким образом: первая...

Вызов шаблонной функции
Что я делаю не так? есть функция: template &lt;class T&gt; T rFF(string input_file)...

Реализация шаблонной функции copy
Задание: реализовать шаблонную функцию copy, копирующую часть или весь...

Не вызывается специализация шаблонной функции
Читаю книгу Прата, C++ Primer Plus. В ней есть следующее упражнение. ...

4
stzer
111 / 87 / 53
Регистрация: 26.10.2013
Сообщений: 270
Завершенные тесты: 2
22.06.2016, 22:00 #2
C++
1
2
template <typename Iter>
double average(Iter begin, Iter end)
Добавлено через 6 минут
C++
1
2
3
4
5
6
auto it = begin;
 
while (begin != end) {
    sum += *it;
    ++it; ++count;
}
Перепроверьте
0
Whoops
21 / 7 / 3
Регистрация: 29.08.2014
Сообщений: 78
Завершенные тесты: 1
22.06.2016, 22:01  [ТС] #3
Ошибка осталась,появляется во время вызова функции
0
Миниатюры
Итераторы в шаблонной функции  
stzer
111 / 87 / 53
Регистрация: 26.10.2013
Сообщений: 270
Завершенные тесты: 2
22.06.2016, 22:01 #4
Лучший ответ Сообщение было отмечено Whoops как решение

Решение

C++
1
2
3
4
5
6
    auto it = begin;
 
    while (it != end) {
        sum += *it;
        ++it; ++count;
    }
1
Whoops
21 / 7 / 3
Регистрация: 29.08.2014
Сообщений: 78
Завершенные тесты: 1
22.06.2016, 22:03  [ТС] #5
Спасибо,заработало.
0
22.06.2016, 22:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2016, 22:03
Привет! Вот еще темы с решениями:

Ошибка вызова шаблонной функции - C++
Читаю Прата, остановился на таком задании: Напишите функцию с интерфейсом в...

Экспорт шаблонной функции из DLL
Привет! В DLL есть класс и глобальная шаблонная функция, для получения...

Экспортирование шаблонной функции из dll
Использую mvs 2013 Весь вечер курил сайт microsoft по шаблонам и dll, никакого...

Вызов метода шаблонной функции
Изучаю шаблоны и не совсем могу понять момент, на 10 строке я объявляю метод, а...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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