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

Как правильно создать шаблон на функцию, которая использует вектор? - C++

Восстановить пароль Регистрация
 
Dra
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 6
20.05.2013, 18:15     Как правильно создать шаблон на функцию, которая использует вектор? #1
есть вот такая шаблонная функция,


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template  <typename  T> void rev(const std::vector <T> &v){ 
 
        vector<T>::iterator b = v.begin();
    vector<T>::iterator e = v.end();
 
            while(b<e)
            {
                *b = *b ^ *e;
                *e = *b ^ *e;
                *b = *b ^ *e;
                b++;e--;
            }
 
 
}
копилятор не хочет создавать итераторы. мол не знает как и что. не могу понять в чем ошибка.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 18:15     Как правильно создать шаблон на функцию, которая использует вектор?
Посмотрите здесь:

C++ Создать функцию, которой строка передаётся как параметр, и которая возвращает количество слов
Создать функцию, которой строка передаётся как параметр, и которая возвращает количество слов C++
C++ Напишите программу, которая использует функцию для вычисления среднего геометрического трех чисел типа int, что вводит пользователь.
Напишите программу которая использует функцию для подсчета букв. C++
Напишите программу, которая использует шаблон функции для определения наименьшего из двух аргументов. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,845
Записей в блоге: 2
Завершенные тесты: 1
20.05.2013, 18:20     Как правильно создать шаблон на функцию, которая использует вектор? #2
const_iterator

Добавлено через 3 минуты
И вообще, Вы передаете константную ссылку, и пытаетесь изменить объект
Dra
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 6
20.05.2013, 18:21  [ТС]     Как правильно создать шаблон на функцию, которая использует вектор? #3
а куда его подставлять?
вот вариант этой функции без шаблона, все работает ок.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 void rev(vector <char> &v){
 
 
    vector<char>::iterator b = v.begin();
    vector<char>::iterator e = v.end();
 
            while(b<e)
            {
                *b = *b ^ *e;
                *e = *b ^ *e;
                *b = *b ^ *e;
                b++;e--;
            }
 
 
}

с константой ссылкой разобрался
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,845
Записей в блоге: 2
Завершенные тесты: 1
20.05.2013, 18:22     Как правильно создать шаблон на функцию, которая использует вектор? #4
Цитата Сообщение от Dra Посмотреть сообщение
вот вариант этой функции без шаблона
Работает не потому что без шаблона, а потому что без const
C++
1
void rev(const std::vector <T> &v)
C++
1
void rev(vector <char> &v)
Dra
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 6
20.05.2013, 18:23  [ТС]     Как правильно создать шаблон на функцию, которая использует вектор? #5
а как написать шаблон для разных типов? я про сам прототип
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,845
Записей в блоге: 2
Завершенные тесты: 1
20.05.2013, 18:25     Как правильно создать шаблон на функцию, которая использует вектор? #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 template  <typename  T> 
 void rev(std::vector <T> &v){ 
 
        vector<T>::iterator b = v.begin();
    vector<T>::iterator e = v.end();
 
            while(b<e)
            {
                *b = *b ^ *e;
                *e = *b ^ *e;
                *b = *b ^ *e;
                b++;e--;
            }
 
 
}
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
20.05.2013, 18:28     Как правильно создать шаблон на функцию, которая использует вектор? #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template  <typename  T> void rev(const std::vector <T> &v){ 
 
       typename std::vector< T >::iterator b = v.begin();
       typename std::vector<T>::iterator e = v.end();
 
            while(b<e)
            {
                *b = *b ^ *e;
                *e = *b ^ *e;
                *b = *b ^ *e;
                b++;e--;
            }
 
 
}
Dra
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 6
20.05.2013, 18:28  [ТС]     Как правильно создать шаблон на функцию, которая использует вектор? #8
Ругаеться и выдает такую ошибку


./src/Ch2.cpp:7: error: expected `;' before 'b'
../src/Ch2.cpp:8: error: expected `;' before 'e'
../src/Ch2.cpp:10: error: 'b' was not declared in this scope
../src/Ch2.cpp:10: error: 'e' was not declared in this scope
../src/Ch2.cpp:7: error: dependent-name 'std::vector<T,std::allocator<_CharT> >::iterator' is parsed as a non-type, but instantiation yields a type
../src/Ch2.cpp:7: note: say 'typename std::vector<T,std::allocator<_CharT> >::iterator' if a type is meant
../src/Ch2.cpp:8: error: dependent-name 'std::vector<T,std::allocator<_CharT> >::iterator' is parsed as a non-type, but instantiation yields a type
../src/Ch2.cpp:8: note: say 'typename std::vector<T,std::allocator<_CharT> >::iterator' if a type is meant
make: *** [src/Ch2.o] Error 1
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,845
Записей в блоге: 2
Завершенные тесты: 1
20.05.2013, 18:34     Как правильно создать шаблон на функцию, которая использует вектор? #9
Цитата Сообщение от Dra Посмотреть сообщение
Ругаеться и выдает такую ошибку
пост #7, только const уберите
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 18:40     Как правильно создать шаблон на функцию, которая использует вектор?
Еще ссылки по теме:

Как в main() создать указатель на функцию, которая находится в классе? C++
C++ Как правильно создать функцию и затем вызвать ее
Как сделать функцию, которая тип данных использует как параметр? C++

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

Или воспользуйтесь поиском по форуму:
Dra
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 6
20.05.2013, 18:40  [ТС]     Как правильно создать шаблон на функцию, которая использует вектор? #10
Цитата Сообщение от Croessmah Посмотреть сообщение
пост #7, только const уберите
Огромное спасибо!! вопрос решен!! благодарен всем!
Yandex
Объявления
20.05.2013, 18:40     Как правильно создать шаблон на функцию, которая использует вектор?
Ответ Создать тему
Опции темы

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