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

вопрос по шаблонам - C++

Восстановить пароль Регистрация
 
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
26.10.2009, 16:39     вопрос по шаблонам #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
#include<iostream>
#include<string>
#include<vector>
using namespace std;
 
 
void printVector(vector<int> &vec);
 
int main()
{   int a;
    vector <int> v;
    cout<<"vvedite 4islo";
    cin>>a;
    v.push_back(a);
    cout<<"vvedite 4islo";
    cin>>a;
    v.push_back(a);
    printVector(v); 
    system ("PAUSE");
}
 
void printVector(vector<int> &vec)
{
     vector<int>::const_iterator p1;
     for (p1=vec.begin();p1 != vec.end(); p1++)
     cout<<*p1<<"\n";
}
Попытка сделать шаблон
пишу как показано в учебнике и не выходит может покажете где ошибка

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
#include<iostream>
#include<string>
#include<vector>
using namespace std;
 
template <class A>
void printVector(vector<A> &vec);
 
int main()
{   int a;
    vector <int> v;
    cout<<"vvedite 4islo";
    cin>>a;
    v.push_back(a);
    cout<<"vvedite 4islo";
    cin>>a;
    v.push_back(a);
    printVector(v); 
    system ("PAUSE");
}
template <class A>
void printVector(vector<A> &vec)
{
     vector<A>::const_iterator p1;
     for (p1=vec.begin();p1 != vec.end(); p1++)
     cout<<*p1<<"\n";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2009, 16:39     вопрос по шаблонам
Посмотрите здесь:

C++ Вопрос
вопрос.. C++
Вопрос к специалистам C++
C++ вопрос по ооп
C++ Вопрос по функциям
Глупый вопрос по шаблонам C++
Вопрос C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,901
Завершенные тесты: 1
26.10.2009, 19:21     вопрос по шаблонам #2
Перенеси функцию printVector выше функции main.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
26.10.2009, 19:24     вопрос по шаблонам #3
Какая ошибка именно?
Только что проверил - все работает.
VS 2005.
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
26.10.2009, 23:29  [ТС]     вопрос по шаблонам #4
CyBOSSeR
Слушай ты проверил второй код? или только первый?
я на Dev-C++ делаю
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
26.10.2009, 23:36     вопрос по шаблонам #5
Второй, с шаблонами.
Скопируй сюда ошибки, которые выдает компилятор.
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
26.10.2009, 23:55     вопрос по шаблонам #6
Микрософтовский компилятор вообще не особо соответствует стандарту С++.
Если для изучения С++ тебе важно соответствие стандарту, то лучше использовать Comeau или Mingw.

оффтоп.
в прочем, повторяется история с жавой.
недавно узнал что микрософт выпустил еще какую-то версию винды, я то думал они разорились в 2007.
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
27.10.2009, 00:02  [ТС]     вопрос по шаблонам #7
CyBOSSeR скрин сделал с ошибками
Миниатюры
вопрос по шаблонам  
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
27.10.2009, 00:13     вопрос по шаблонам #8
ILJON,
простой вариант:

template <typename T> void printVector1(const T& vec);

"продвинутый" вариант (более строгий к спецификации контейнера

template <typename T, typename _Ax, template <typename, typename> class V> void printVector2(const V<T, _Ax>& vec);
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
27.10.2009, 00:26  [ТС]     вопрос по шаблонам #9
Rififi
ты вот так имешь ввиду?
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
#include<iostream>
#include<string>
#include<vector>
using namespace std;
 
template <typename A> void printVector(const A & vec);
//void printVector(vector<A> &vec);
 
int main()
{   int a;
    vector <int> v;
    cout<<"vvedite 4islo";
    cin>>a;
    v.push_back(a);
    cout<<"vvedite 4islo";
    cin>>a;
    v.push_back(a);
    printVector(v); 
    system ("PAUSE");
}
template <typename A> void printVector(const A & vec)
//void printVector(vector<A> &vec)
{
     vector<A>::const_iterator p1;
     for (p1=vec.begin();p1 != vec.end(); p1++)
     cout<<*p1<<"\n";
}
если так то всеравно ошибка :[
или может я что то не так понял? :]] уж не серчайте я только учусь :]
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
27.10.2009, 00:34     вопрос по шаблонам #10
ILJON,
не знаю что там у тебя за ошибка (лень вникать), но строка 24 неправильная
надо так: typename A::const_iterator p1;

Добавлено через 53 секунды
да и вместо p1++ лучше ++p1
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
27.10.2009, 00:42  [ТС]     вопрос по шаблонам #11
спасиб заработало :]]]
а есть ли принципиальная разница между p++ и ++p ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2009, 00:58     вопрос по шаблонам
Еще ссылки по теме:

Необходим совет по шаблонам C++
C++ программка по шаблонам
C++ Передача параметров по значению и по константным ссылкам применительно к шаблонам
Поясните по шаблонам C++

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

Или воспользуйтесь поиском по форуму:
Rififi
 Аватар для Rififi
2332 / 1047 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
27.10.2009, 00:58     вопрос по шаблонам #12
ILJON,
а есть ли принципиальная разница между p++ и ++p ?
естессно, есть..
в первом случае будет возвращено текущее состояние объекта, и только потом произойдет операция инкрементирования, во втором - инкремент произойдет сразу, значение до инкремента получить невозможно.
кроме того, втоой случай для сложных объектов потенциально быстрее работает, ибо не надо сохранять текущее состояние во временной переменной.

для подробностей можно погооглить "C++ пред пост инкремент"
Yandex
Объявления
27.10.2009, 00:58     вопрос по шаблонам
Ответ Создать тему
Опции темы

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