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

Шаблон как тип контейнера std::set - C++

Восстановить пароль Регистрация
 
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
07.07.2014, 23:25     Шаблон как тип контейнера std::set #1
Кликните здесь для просмотра всего текста
C++ (Qt)
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
template<class T>
int func(T&, int);
typedef std::ostream_iterator<int> out_in;
int main()
{
 
    int xx[20]{1, 2, 3, 4, 5, 6, 7, 7, 8, 2,234,234,2,34,23,423,3,242,42,342};
    int size = func(xx, 20);
    std::copy(xx, xx + 20, out_in(cout, " "));
    cout << "\n" << size << "\n";
 
 
 
 
 
 
 
 
    system("pause");
    return 0;
}
template <class T>
int  func(T &a, int n)
{
    std::set<T> e(a, a+n);
    std::copy(e.begin(), e.end(), a);
    for (auto x = e.size(); x < n; x++)
        a[x] = 0;
    return e.size();
 
}

Подскажите в чем проблема?? Меняю тип контейнеру на int и все работает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
07.07.2014, 23:43     Шаблон как тип контейнера std::set #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
 
 
int main()
{
     const int size= 20;
     int x[size]={1, 2, 3, 4, 5, 6, 7, 7, 8, 2,234,234,2,34,23,423,3,242,42,342};
 
     std::sort(x,x+size);
     int n= std::distance(x,std::unique(x,x+size));
 
     for(int i=0; i<n; ++i)
         std::cout<<i<<") "<<x[i] << std::endl;
 
     getchar();
     return 0;
}
http://www.cplusplus.com/reference/a...que/?kw=unique
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
07.07.2014, 23:49  [ТС]     Шаблон как тип контейнера std::set #3
знаю знаю, а что на счет set(a) с ним нельзя использовать шаблон?
вот про std::distance не знал )
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
07.07.2014, 23:54     Шаблон как тип контейнера std::set #4
C++
1
2
3
4
5
6
7
8
9
10
template <class T>
int  func(T* a, int n) // Указатель на T (int)
{
        std::set<T> e(a, a+n);
        std::copy(e.begin(), e.end(), a);
        for (auto x = e.size(); x < n; x++)
                a[x] = 0;
        return e.size();
 
}
Или
C++
1
2
3
template <class T>
int  func(T a[], int n)
{/*...*/}
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
08.07.2014, 09:07  [ТС]     Шаблон как тип контейнера std::set #5
Я это пробовал - не работает...
Компилятор vs 2013
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.07.2014, 10:40     Шаблон как тип контейнера std::set #6
C++
1
2
3
4
5
6
7
8
9
10
11
template <class T>
int func(T& a, int n)
{
   typedef typename std::remove_extent<T>::type type;
 
   std::set<type> e(a, a+n);
   std::copy(e.begin(), e.end(), a);
   for (auto x = e.size(); x < n; x++)
      a[x] = 0;
   return e.size();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2014, 13:48     Шаблон как тип контейнера std::set
Еще ссылки по теме:

C++ Итератор контейнера set
C++ Сравнить два контейнера set
Std::set, как добавить собственную проверку уникальности для класса? C++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
08.07.2014, 13:48     Шаблон как тип контейнера std::set #7
DiffEreD, MousePro, хм странно, в С++BuilderXE3 компилится.
Yandex
Объявления
08.07.2014, 13:48     Шаблон как тип контейнера std::set
Ответ Создать тему
Опции темы

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