С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
#1

Можно ли вызвать определенную переменную с шаблона - C++

24.05.2010, 15:58. Просмотров 392. Ответов 9
Метки нет (Все метки)

Можно ли вызвать определенную переменную с шаблона , в реализации??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2010, 15:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли вызвать определенную переменную с шаблона (C++):

можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать? - C++
можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это...

Как можно сделать что бы в консольном окне можно было вызвать контекстное меню как в win cmd? - C++
Если вызвать cmd в windows то в нем можно вызывать контекстное меню и совершать различные полезные действия (копирование/вставка). А те...

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

Можно ли так вызвать метод? - C++
Всем доброго времени суток! Вот такая ситуация. class A { void fun(); }; class B {

Можно ли вручную вызвать метод main() - C++
у меня в книге по C++ написано, что метод main() является зарезервированным системой и что его невозможно вызвать вручнуюкак обычную...

Как можно изменить параметр шаблона (template)? - C++
есть такие классы: class abstract { public: virtual int method() = 0; // Допустим }; class A: public abstract {

9
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
24.05.2010, 16:11 #2
шаблона чего? пример бы не помешал
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
24.05.2010, 20:36  [ТС] #3
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
template<class type> void sortV(type *b,long n) {
type a,i,j;
float c;
 for (i=0;i<n;i++)
 for(j=i+1;j<n;j++)
     {  if (b[i] >b[j])
    {   c++;
        a= b[i];
        b[i]=b[j];
        b[j]=a;
    }
    }
    cout<<endl<<"KilkisTb perestanovok =>["<<c<<"]"<<endl;
    }
 
template <class type>void sortB(type *b,long n)
{
type a,j,i;
float c;
 for(i=0;i<n-1;i++)
 for( j=n-1; j>i; j--)
       { if(b[j-1] > b[j])
     {c++;
    a= b[j-1];
    b[j-1]=b[j];
    b[j]=a;
}
}
cout<<endl<<"KilkisTb perestanovok =>["<<c<<"]"<<endl;
}
Мне нужно в реализации, сравнить переменную "с" сортировки вставки, и пузырька, для того, что бы узнать какой метод лучший.
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.05.2010, 21:03 #4
ну так... возвращайте ее.
C++
1
2
3
4
5
6
7
8
template<class type> 
float sortV(type *b,long n) 
{
   float c = 0;
   // some code
 
   return c;
}
Только тогда уж сделайте ее целого типа, зачем там float нужен непонятно
0
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
24.05.2010, 21:07 #5
в данном отношении шаблон не отличается от простой функции
"с" можно просто вернуть
C++
1
2
3
4
5
6
template<class type> int sortV(type *b, long n) {
type a,i,j;
int c;
.....
return c;
}
Добавлено через 29 секунд
// опередили )
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
24.05.2010, 21:33  [ТС] #6
Кажется вы меня не поняли. Мне нужно сравнить что больше, "с" от сорт. выбору, и "с" от пузырька, сравнить в уже в драйвере
void main()
{
... тут.
}
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.05.2010, 21:36 #7
Кажется это вы ничего не понимаете

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
int a() { 
   return 1; }
int b() { 
   return 2; }
 
int main()
{
   cout << a() << ' ' << b() << endl;
}
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
24.05.2010, 21:52  [ТС] #8
fasked, у меня шаблоны же.
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
template<class type> void sortV(type *b,long n) {
type a,i,j;
float c;
 for (i=0;i<n;i++)
 for(j=i+1;j<n;j++)
     {  if (b[i] >b[j])
        {   c++;
            a= b[i];
            b[i]=b[j];
            b[j]=a;
        }
        }
        cout<<endl<<"KilkisTb perestanovok =>["<<c<<"]"<<endl;
        }
 
template <class type>void sortB(type *b,long n)
{
type a,j,i;
float c;
 for(i=0;i<n-1;i++)
 for( j=n-1; j>i; j--)
       { if(b[j-1] > b[j])
         {c++;
        a= b[j-1];
        b[j-1]=b[j];
        b[j]=a;
}
}
cout<<endl<<"KilkisTb perestanovok =>["<<c<<"]"<<endl;
}
void main()
{
long n;
float *a;
cout<<sortB(a,n)<<' '<<sortV(a,n);
}
так просто же нельзя
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.05.2010, 21:55 #9
Цитата Сообщение от MAQSA Посмотреть сообщение
так просто же нельзя
еще как можно! вам же сказали, что шаблон в этом плане ничем не отличается от обычной функции

C++
1
2
3
4
5
6
7
8
9
10
11
template <typename T> int a(T * a)
{
   int c = 0;
   return c;
}
 
int main()
{
   int arr[3];
   cout << a(arr) << endl;
}
0
MAQSA
2 / 2 / 0
Регистрация: 18.04.2010
Сообщений: 119
25.05.2010, 22:30  [ТС] #10
Ясно. Есть еще вопрос:

Добавлено через 21 час 1 минуту
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
emplate <class type>float sortV(type *b,long n)
{
type a,i,j;
float c;
 for (i=0;i<n;i++)
 for(j=i+1;j<n;j++)
     {  if (b[i] >b[j])
    {   c++;
        a= b[i];
        b[i]=b[j];
        b[j]=a;
    }
    }
    return c;
    }
template <class type>float sortB(type *b,long n)
{
type a,j,i;
float  c;
 for(i=0;i<n-1;i++)
 for( j=n-1; j>i; j--)
       { if(b[j-1] > b[j])
     { c++;
    a= b[j-1];
    b[j-1]=b[j];
    b[j]=a;
}
}
return c;
}
 
void main()
{float *el;
long n;
 
......
cout<<"Sort Bulb"<<endl;
cout<<endl<<"MACUB Do COPTyBAHH9"<<endl;
Print(el,n);//вывод массива на экран
cout<<endl<<"KilkisTb perestanovok="<<sortB(eq,n);//[B]вывод кол-во перестановок сорт. Пузырька[/B]
sortB(el,n);//сортировка
cout<<endl<<"Masuv pisla sort"<<endl;
Print(el,n);//вывод после сортировки
cout<<endl<<"Pokazatu sortyvan9 Vubory? (Y-yes\N-no)"<<endl<<"=>";
while((a!='n')&(a!='y'))
cin>>a;
if(a=='y')
{
cout<<"Kilkistb perestanovok ===Sort Vubory===> "<<sortV(eq,n);//[B]вывод кол-во перестановок ВЫБОРУ.[/B]
cout<<endl<<"BucHoBok: "<<endl;
}
....
}
Результат:

Вывод кол-ва перестановок 2-м способом, выдает неверный результат. Возможно это из-за не верного определения типа счетчика "с" в шаблонах?

Добавлено через 23 минуты
подскажите хоть, как правильно сделать
0
25.05.2010, 22:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2010, 22:30
Привет! Вот еще темы с ответами:

Можно ли использовать параметр шаблона без типа? - C++
#define TV(OBJ) typeof(OBJ), OBJ template&lt;class T, T obj&gt; class A {/*...*/}; int f (int); A&lt;TV(f)&gt; a; Можно ли сделать...

Как можно явно вызвать оператор преобразования? - C++
Доброго времени суток Как можно явно вызвать такой оператор преобразования? struct CL { template &lt;class A, class B, class...

Можно ли разбивать определение шаблона класса на несколько файлов? - C++
Можно ли написать в хедере определение класса с прототипами методов, а реализацию методов в отдельном файле?

Как можно правильно вызвать apply в следующей ситуации... - C++
Здравствуйте. Хотел использовать метод apply для перебора элементов контейнера valarray. Но мне нужно получать доступ ко внешней...


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

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

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