Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49

вопрос по шаблонам

26.10.2009, 16:39. Показов 1071. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
начал разбираться в шаблонах и что то не получается
вот код без шаблона
все работает

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";
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.10.2009, 16:39
Ответы с готовыми решениями:

Глупый вопрос по шаблонам
Доброе время суток! Я достаточно опытный программист Java, но жизнь, как говорится, заставила переквалифицироваться на C++, причем,...

Вопрос по шаблонам
Подскажите... можно ли сделать и как? В joomal'e чтоб при нажатии заданной сылки изменялся дизайн шаблона и переходил на данную ссылку,...

Пояснение по шаблонам
В стандарте 2003 года(ISO) 14.5.4/8 есть такая фраза: &quot;A non-type argument is non-specialized if it is the name of a non-type parameter....

11
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
26.10.2009, 19:21
Перенеси функцию printVector выше функции main.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
26.10.2009, 19:24
Какая ошибка именно?
Только что проверил - все работает.
VS 2005.
0
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
26.10.2009, 23:29  [ТС]
CyBOSSeR
Слушай ты проверил второй код? или только первый?
я на Dev-C++ делаю
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
26.10.2009, 23:36
Второй, с шаблонами.
Скопируй сюда ошибки, которые выдает компилятор.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
26.10.2009, 23:55
Микрософтовский компилятор вообще не особо соответствует стандарту С++.
Если для изучения С++ тебе важно соответствие стандарту, то лучше использовать Comeau или Mingw.

оффтоп.
в прочем, повторяется история с жавой.
недавно узнал что микрософт выпустил еще какую-то версию винды, я то думал они разорились в 2007.
0
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
27.10.2009, 00:02  [ТС]
CyBOSSeR скрин сделал с ошибками
Миниатюры
вопрос по шаблонам  
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
27.10.2009, 00:13
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);
2
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
27.10.2009, 00:26  [ТС]
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";
}
если так то всеравно ошибка :[
или может я что то не так понял? :]] уж не серчайте я только учусь :]
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
27.10.2009, 00:34
ILJON,
не знаю что там у тебя за ошибка (лень вникать), но строка 24 неправильная
надо так: typename A::const_iterator p1;

Добавлено через 53 секунды
да и вместо p1++ лучше ++p1
1
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
27.10.2009, 00:42  [ТС]
спасиб заработало :]]]
а есть ли принципиальная разница между p++ и ++p ?
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
27.10.2009, 00:58
ILJON,
а есть ли принципиальная разница между p++ и ++p ?
естессно, есть..
в первом случае будет возвращено текущее состояние объекта, и только потом произойдет операция инкрементирования, во втором - инкремент произойдет сразу, значение до инкремента получить невозможно.
кроме того, втоой случай для сложных объектов потенциально быстрее работает, ибо не надо сохранять текущее состояние во временной переменной.

для подробностей можно погооглить "C++ пред пост инкремент"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.10.2009, 00:58
Помогаю со студенческими работами здесь

Поясните по шаблонам
Читаю Солтера, а именно шаблоны. Наткнулся на &quot;некоторые компиляторы требуют что бы определения шаблонных методов помещались в...

Поиск по шаблонам
как сделать условие чтобы оно выбирало по шаблонам действие, например у меня решение так $content=&quot;test test2test3 test test...

программка по шаблонам
Пытаюсь конвертировать контайнер класс в шаблон. Укажите, пожалуйста, на ошибки в программе: Header file &quot;sequence4.h&quot; ...

Необходим совет по шаблонам
Доброго всем времени суток! Изучаю шаблоны - по ходу дела вопросы на понимание темы: 1. Учитывая прототип для шаблон функции: ...

Литература по шаблонам проектирования
Подскажите, где почитать-поучить-посмотреть про шаблоны проектирования что-то интересненькое. Спасибо!


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru