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

Шаблоны, древовидная сортировка: как правильно передавать тип в шаблонную функцию? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка в программе http://www.cyberforum.ru/cpp-beginners/thread749778.html
Здравствуйте! Решал одну задачу. И возникла проблема при выводе результата в файл. Не могу понять, что не так, не могу понять почему не работает. Немного подправил, все равно не работает. Помогите пожалуйста разобраться. //----------------- #include <fstream> #include <string> using namespace std; ifstream cin("input.txt"); ofstream cout("output.txt"); string s, st; int h, i, j, k, pos;...
C++ Одномерные массивы. Поиск последовательностей Помогите с задачей !!! в с++ Объявить массив целых чисел и заполнить его случайными значениями. Рзмерность массива – 100, диапазон значений . Во всех последовательностях положительных чисел изменить порядок элементов на противоположный. http://www.cyberforum.ru/cpp-beginners/thread749769.html
Подсветка синтаксиса в Emacs C++
Скажите пожалуйста, как в Emacs сделать автоматическую подсветку кода С++ в файлах с расширением .h - там только C, а в файлах .cpp все нормально.
C++ Нахождение всех неотрицательных чисел, стоящих на четных местах в последовательности
=-O
C++ Составить алгоритм нахождения суммы наибольшего и наименьшего из заданных чисел http://www.cyberforum.ru/cpp-beginners/thread749744.html
:(:(
C++ составить алгоритм инвертирования ряда чисел , т.е. записи всех чисел заданного ряда в обратном порядке :cry: подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
7211 / 4377 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
31.12.2012, 17:01  [ТС]
Сейчас решил протестировать функцию отдельно, немного изменив её:
ts.h
Кликните здесь для просмотра всего текста
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef _TREE_SORT_H_
#define _TREE_SORT_H_
#include <vector>
#include <iterator>
 
template <typename T>
struct Tree
{
    T a;       
    Tree* left; 
    Tree* right;
};
 
template <class Tree, typename T>
Tree* add_to_tree(Tree* root, T new_value)
{
    if (!root)
    {
        root = new Tree;
        root->a = new_value;
        root->left = root->right = 0;
        return root;
    }
 
    if (root->a < new_value)
        root->right = add_to_tree(root->right, new_value);
    else
        root->left  = add_to_tree(root->left,  new_value);
    return root;
}
 
template <class Tree, typename T>
void tree_to_vec(Tree* root, std::vector<T> &v)
{
    if (!root) return;
    tree_to_vec(root->left, v);
    v.push_back(root->a);
    tree_to_vec(root->right, v);
    delete root;
}
 
template <class Tree, class InputIterator, typename T>
Tree* add(InputIterator begin, InputIterator end)
{
    Tree* root = 0;
    for (; begin != end; ++begin)
        root = add_to_tree(root, *begin);
    return root;
}
 
template <typename T>
void tree_sort(std::vector<T> &v)
{
    tree_to_vec(add (v.begin(), v.end()), v);
}
 
#endif

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
#include "ts.h"
 
int main()
{
    std::vector<int> v;
    v.push_back(4); v.push_back(2);
    v.push_back(3); v.push_back(2);
    tree_sort<int>(v);
    
    for (int i=0; i < 4; i++)
        std::cout << v[i] << " ";
}
Код
54 5 D:\My works in C++\ts.h [Error] no matching function for call to 'add(std::vector<int>::iterator, std::vector<int>::iterator)'
54 5 D:\My works in C++\ts.h [Error] candidate is: 
43 49 D:\My works in C++\ts.h template<class Tree, class InputIterator, class T> Tree* add(InputIterator, InputIterator)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru