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

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

Войти
Регистрация
Восстановить пароль
 
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
#1

Шаблоны, "invalid iterator range" - C++

20.04.2011, 11:27. Просмотров 500. Ответов 4
Метки нет (Все метки)

написать шаблонную функцию которая копирует значения с интервала [begin, end) в интервал что начинаетса с dst

функцию написал
C++
1
2
3
4
5
template<typename T> void copy(T* dst, const T* begin, const T* end)
{
        for(int i =0 ; (begin + i) < end ; i++)
            dst[i] = begin[i];
}
C++
1
2
3
4
5
6
template<typename T> void rand_arr( T* data,  int size)
{
    for (int i=0; i<size; i++ )
        data[i] = (T)((rand()%255) +1);
 
}
в мейне
C++
1
2
3
4
5
6
int size = 10;
    int *m = new int [size];
    int *n = new int[size];
rand_arr(m,size);
 
    copy(n,m,m+10);
при запуске програмы когда компилятор доходит до функции копи возникает ошибка invalid iterator range
где я накосячил?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2011, 11:27     Шаблоны, "invalid iterator range"
Посмотрите здесь:

Почему выдает ошибку в строке "for(Data::iterator p=stats.begin(); p!=stats.end(); ++p)" C++
Выдает ошибку invalid conversion from "int*" to "int" C++
C++ Ошибка при запуске программы "vector iterator not incrementable"
C++ Vector iterator + offset out of range
C++ Ошибка "String subscript out of range"
C++ Vertor erase iterator outside range
Шаблоны. Плохо понимаемые моменты из книги "Шаблоны С++. Справочник разработчика". (Вандевурд, Джосаттис) C++
C++ Исправить ошибку "Vector iterator not dereferancable"
C++ Ошибка "range-based 'for' loops are not allowed in c++ mode"
C++ Ошибка при быстрой сортировке файла: "string subscript out of range"
C++ Ошибка "iterator not dereferencable" при использовании ссылки
Найти причины возникновения ошибки "out of range" (файловый ввод/вывод) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.04.2011, 11:45     Шаблоны, "invalid iterator range" #2
да все работает на самом деле
вот прокачал
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
#include <cstdlib>
#include <algorithm>
#include <iterator>
#include <iostream>
 
template<class T_in, class T_out> void copy(T_out dst, T_in begin, T_in end)
{
  for( ; begin != end ; ) *dst++ = *begin++;
}
 
template<typename T> void rand_arr( T* data,  int size)
{
        for (int i=0; i<size; i++ )
                data[i] = (T)((rand()%255) +1);
 
}
 
int main(){
        int size = 10;
        int *m = new int [size];
        int *n = new int[size];
        rand_arr(m,size);
        copy(n,m,m+10);
        std::ostream_iterator<int> it( std::cout, " " ); 
        copy( it, m, m+10 );
}
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
20.04.2011, 15:31  [ТС]     Шаблоны, "invalid iterator range" #3
странно у меня вылетает вот такое окно,
http://saveimg.ru/pictures/20-04-11/...f330183cee.png
сейчас попробую ваш вариант

Добавлено через 6 минут
Ваш код работает,
только не могу понять что это за строчка такая?
Код
 std::ostream_iterator<int> it( std::cout, " " );
Добавлено через 1 час 10 минут
и ещо чем отличаетса
Код
template<class .... от
template<typename.....
?

Добавлено через 2 часа 6 минут
с итераторами я немного уже понял...
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
20.04.2011, 18:01     Шаблоны, "invalid iterator range" #4
mansp, в параметре шаблона typename от class не отличается ничем.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.04.2011, 18:48     Шаблоны, "invalid iterator range" #5
Цитата Сообщение от mansp Посмотреть сообщение
только не могу понять что это за строчка такая?
итератор потока вывода
*it = 10
означает сделать вывести в поток 10 и добавить пробел
Yandex
Объявления
20.04.2011, 18:48     Шаблоны, "invalid iterator range"
Ответ Создать тему
Опции темы

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