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

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

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

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

20.04.2011, 11:27. Просмотров 541. Ответов 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"
Посмотрите здесь:

Ошибка при запуске программы "vector iterator not incrementable" - C++
при запуске программы (без разницы какой функции) вылетает ошибка (заг. темы) как это исправить? мне кажется, что проблема в том, что я...

Ошибка "iterator not dereferencable" при использовании ссылки - C++
Всем привет. Без ссылки все работает, с ссылкой ошибка: &quot;iterator not dereferencable&quot;. С ссылкой: void func(vector&lt;string&gt;&amp; arr) ...

Исправить ошибку "Vector iterator not dereferancable" - C++
Всех с наступающим Новым Годом! У меня возникла проблема с вот этой функцией (я пытаюсь реализовать алгоритмы stl, чтобы лучше в них...

Почему выдает ошибку в строке "for(Data::iterator p=stats.begin(); p!=stats.end(); ++p)" - C++
&quot;Read a sequence of possibly whitespaceseparated (name,value) pairs, where the name is a single whitespaceseparated word and the value is...

Ошибка "range-based 'for' loops are not allowed in c++ mode" - C++
range-based 'for' loops are not allowed in c++ mode как исправить?

Найти причины возникновения ошибки "out of range" (файловый ввод/вывод) - C++
if(READ) { char text2; std::ifstream *file=new std::ifstream(&quot;Rec.txt&quot;); std::ifstream *file1=new std::ifstream(&quot;Rec.txt&quot;); ...

Ошибка при быстрой сортировке файла: "string subscript out of range" - C++
В файле input.txt содержатся сведения о группе студентов в формате: номер группы; запись о каждом студенте группы содержит следующие...

Ошибка "String subscript out of range" - C++
#include &lt;SFML/Graphics.hpp&gt; using namespace sf; int ground = 400; int i; const int H = 12; const int W = 40; String...

Vertor erase iterator outside range - C++
Всем привет! Пытаюсь разобраться с кодом алгоритма шифрования методом Хаффмана, и наткнулся на ошибку (скрин в приложении). Что в этом...

Vector iterator + offset out of range - C++
Вылазит такая ошибка. Подскажите, из-за чего она может вылезти?

Бинарный поиск, ошибка: "Invalid operands to binary expression" - C++
При компиляции программы XCode ругается на: algorithm:677:97: Invalid operands to binary expression ('const Luggage' and 'int') Сломал...

Ошибка при компиляции invalid suffix "i64" on integer constant - C++
Подскажите, при компиляции вылетает ошибка ./pluginterfaces/base/ftypes.h:82:33: error: invalid suffix &quot;i64&quot; on integer constant ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
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
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
20.04.2011, 18:01     Шаблоны, "invalid iterator range" #4
mansp, в параметре шаблона typename от class не отличается ничем.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
20.04.2011, 18:48     Шаблоны, "invalid iterator range" #5
Цитата Сообщение от mansp Посмотреть сообщение
только не могу понять что это за строчка такая?
итератор потока вывода
*it = 10
означает сделать вывести в поток 10 и добавить пробел
Yandex
Объявления
20.04.2011, 18:48     Шаблоны, "invalid iterator range"
Ответ Создать тему
Опции темы

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