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

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

Войти
Регистрация
Восстановить пароль
 
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 428
#1

Шаблон функции, принимающей обычные массивы и объекты - C++

18.07.2013, 09:18. Просмотров 450. Ответов 3
Метки нет (Все метки)

Нужно чтобы функция одинаково хорошо принимала массив long и объект vector <string>, чтобы затем удалить повторяющиеся элементы, отсортировать и вернуть количество элементов в новом массиве. Как лучше всего обеспечить приём аргументов, итераторами? Программа:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <iterator>
 
using std :: cout;
using std :: cin;
using std :: vector;
using std :: string;
using std :: iterator;
 
template <class T>
int reduce (T * start, T * end);
 
int main () {
    long ar [6];
    cout << "Enter 6 elements of array: ";
    int i = 0;
    while ( i++ < 6 && cin >> ar [i]  )
        continue;
    cout << "Reduced array: " << reduce (ar, ar + 6) << " elements.\n";
    vector <string> sarray;
    string temp;
    cout << "Enter 6 elements of array: ";
    i = 0;
    while ( i++ < 6 && cin >> temp  )
        sarray.push_back (temp);
    cout << "Reduced array: " << reduce (sarray.begin (), sarray.end ()) << " elements.\n";
    cin.ignore (1);
    cin.get ();
    return 0;
};

Функция:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
template <class T>
int reduce (T * start, T * end) {
    std :: set <T> newarr (start, end);
    copy ( newarr.begin (), newarr.end (), std :: ostream_iterator <T, char> (cout, " ") );
    return newarr.size ();
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2013, 09:18     Шаблон функции, принимающей обычные массивы и объекты
Посмотрите здесь:

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

Динамическая память. Функции. Массивы .Объекты - C++
Всем привет. Возник следующий вопрос: 1.Когда в c++ из функции возвращается объект (экземпляр какого-то класса), то насколько мне...

нет перегруженной функции, принимающей 3 аргументов - C++
ребят, в чем может быть ошибка, не подскажите?? int Quick() { for(int stolbec=0;stolbec!=ColNumber ;stolbec++) { ...

Нет перегруженной функции, принимающей 2 аргументов - C++
Оговорюсь сразу, что я новичок в программировании, надеюсь на Вашу помощь. Базовый класс: Контейнер(название и кол-во элементов) ...

Объявление функции, принимающей объект любого типа - C++
Доброго времени суток. Мне нужна функция, которая будет принимать 3 объекта функции как критерии сортировки. Все три критерия могут быть...

Зачем нужны обычные массивы, если есть динамические? - C++
Всем привет! Вопрос в заголовке. Если динамический массив даёт те же и ещё больше функций и, при том, лучше обращается с памятью, зачем...

error C2661: pow: нет перегруженной функции, принимающей 1 аргументов - C++
Здравствуйте, уважаемые посетители сего форума. Набирал лабу, столкнулся вот с такой проблемой. Скриншот и код прилагаю: #include...

Создание шаблона bool-функции, принимающей в качестве параметра экземпляр класса - C++
Добрый день. Никак не получается осилить) Суть: есть классы, у которых есть поле str - массив символов. Хочу сделать...

Объяснить назначение функции length(), принимающей в качестве аргумента std::vector - C++
Добрый день! Подскажите, пожалуйста. Есть такая переменная: vector&lt;float&gt; Yvect C тремя числами: 3 1 0 d=length(Yvect); ...

Функция создает объекты и указателями на них заполняет массив. При выходе из функции вызываются деструкторы объектов. Как сохранить объекты? - C++
Вопрос прост: как при выходе из функции сохранить объекты, которые были созданы в данной функции (указатели объектов положены в массив)?

Доделать задачу. Для данного вещественного x найти значение следующей функции f, принимающей значения целого типа - C++
Помогите доделать задачу. #include &lt;iostream&gt; using namespace std; int main() { double x; int y; cout &lt;&lt; &quot;x =...

Отличаются ли обычные функции от функций в классе? - C++
отличаются ли они?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
18.07.2013, 09:28     Шаблон функции, принимающей обычные массивы и объекты #2
C++
1
T reduce (T start, T end)
Внутри, если не требуется все делать руками, то std::sort + std::unique.
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 428
18.07.2013, 09:42  [ТС]     Шаблон функции, принимающей обычные массивы и объекты #3
Цитата Сообщение от 0x10 Посмотреть сообщение
T reduce (T start, T end)
не вариант, оочень много новых ошибок, самая понятная invalid conversion from `long int' to `long int*'

с std::unique я не разобрался как работать, она же вроде на конец диапазона указывает

Добавлено через 59 секунд
Итераторами это можно как-нибудь осуществить?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
18.07.2013, 09:48     Шаблон функции, принимающей обычные массивы и объекты #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
#include <algorithm>
#include <iostream>
#include <vector>
 
template<typename T>
T reduce(T first, T last)
{
    std::sort(first, last);
    return std::unique(first, last);
}
 
int main()
{
    std::vector<int> v = {
        1, 3, 5, 4, 2,
        1, 3, 5, 4, 2,
        1, 3, 5, 4, 2,
        1, 3, 5, 4, 2,
        1, 3, 5, 4, 2};
 
    std::vector<int>::const_iterator end = reduce(v.begin(), v.end());
 
    for (std::vector<int>::const_iterator it = v.begin(); it != end; ++it)
    {
        std::cout << *it << " ";
    }
    std::cout << std::endl;
}
Yandex
Объявления
18.07.2013, 09:48     Шаблон функции, принимающей обычные массивы и объекты
Ответ Создать тему
Опции темы

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