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

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

Войти
Регистрация
Восстановить пароль
 
Dra
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 6
#1

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

20.05.2013, 18:15. Просмотров 328. Ответов 9
Метки нет (Все метки)

есть вот такая шаблонная функция,


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--;
            }
 
 
}
копилятор не хочет создавать итераторы. мол не знает как и что. не могу понять в чем ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 18:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно создать шаблон на функцию, которая использует вектор? (C++):

Как сделать функцию, которая тип данных использует как параметр? - C++
Хочу сделать функцию function(&quot;переменные&quot;, &quot;тип данных&quot;). Можно ли это реализовать? А именно, более подробно что-то в этом роде: ...

Напишите программу, которая использует шаблон функции для определения наименьшего из двух аргументов. - C++
Напишите программу, которая использует шаблон функции для определения наименьшего из двух аргументов. Проверьте программу, используя пары...

Как правильно создать шаблон функции - C++
как мне правильно создать шаблон,чтобы работала ф-ция sub() ? #include&lt;iostream&gt; using namespace std; template&lt;typename...

Напишите программу которая использует функцию для подсчета букв. - C++
Ку, всем. Можете помочь и наглядно обеснить. Напишите программу которая использует функцию для подсчета букв. Использовать string as...

Как правильно создать функцию и затем вызвать ее - C++
#include&lt;string&gt; #include &lt;cmath&gt; #include &lt;iostream&gt; #include&lt;locale&gt; using namespace std; int rl1,rl2,rl3,rl4,a,b,c,s; int...

Напишите программу, которая использует функцию для вычисления среднего геометрического трех чисел типа int, что вводит пользователь. - C++
Напишите программу, которая использует функцию для вычисления среднего геометрического трех чисел типа int, что вводит пользователь. Язык...

9
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,639
Записей в блоге: 3
Завершенные тесты: 1
20.05.2013, 18:20 #2
const_iterator

Добавлено через 3 минуты
И вообще, Вы передаете константную ссылку, и пытаетесь изменить объект
1
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--;
            }
 
 
}

с константой ссылкой разобрался
0
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,639
Записей в блоге: 3
Завершенные тесты: 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)
0
Dra
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 6
20.05.2013, 18:23  [ТС] #5
а как написать шаблон для разных типов? я про сам прототип
0
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,639
Записей в блоге: 3
Завершенные тесты: 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--;
            }
 
 
}
1
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 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--;
            }
 
 
}
1
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
0
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,639
Записей в блоге: 3
Завершенные тесты: 1
20.05.2013, 18:34 #9
Цитата Сообщение от Dra Посмотреть сообщение
Ругаеться и выдает такую ошибку
пост #7, только const уберите
1
Dra
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 6
20.05.2013, 18:40  [ТС] #10
Цитата Сообщение от Croessmah Посмотреть сообщение
пост #7, только const уберите
Огромное спасибо!! вопрос решен!! благодарен всем!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 18:40
Привет! Вот еще темы с ответами:

Написать функцию, которая формирует вектор - C++
Ребят ,помогите написать программу. Написать функцию, которая формирует вектор, элементами которого будут минимальные элементы каждого...

Как создать функцию которая возвращает переменную одного из классов? - C++
Программа пишется в с++ builder 6. Есть несколько классов: class Diggitt{ int l; } class One: public Diggitt{ int...

Как в main() создать указатель на функцию, которая находится в классе? - C++
В этом примере как определить указатель на функцию F()? class A { public: bool F(int &amp;a, int &amp;b) { return a&lt;b; } }; int...

Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?.. - C++
Нужно отредактировать структуру по выбору пользователя. Проблема заключается в создании функции. Подскажите, а лучше покажите, как...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
20.05.2013, 18:40
Ответ Создать тему
Опции темы

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