Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2016, 10:13   #1
oxana.pal
Пользователь
 
Регистрация: 23.02.2016
Сообщений: 23
По умолчанию Функция std::copy()

Написала реализацию программы копирования , но програма крешится и я не могу понять почему. Подскажите где где может быть ошибка.
Код:
#include <vector>
#include <algorithm>

int main()
{
	const float array[] = {0.9f, 0.4f, 1.05f, 0.2f, 0.0f};

	std::vector<float> v;
	std::copy(array, array + (sizeof(array) / sizeof(array[0])), v.begin());

	return 0;
}

Последний раз редактировалось oxana.pal; 03.03.2016 в 10:18.
oxana.pal вне форума Ответить с цитированием
Старый 03.03.2016, 12:53   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

Либо сразу в векторе в конструкторе резервируйте память под нужное кол-во элементов или используйте back_insert_iterator
p51x вне форума Ответить с цитированием
Старый 03.03.2016, 12:57   #3
oxana.pal
Пользователь
 
Регистрация: 23.02.2016
Сообщений: 23
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Либо сразу в векторе в конструкторе резервируйте память под нужное кол-во элементов или используйте back_insert_iterator
не совсем поняла . вы про это?
Код:
std::vector<float> v(5);
Работает)
Код:
int main()
{
	const float array[] = { 0.9f, 0.4f, 1.05f, 0.2f, 0.0f };

	std::vector<float> v(5);
	std::copy(array, array + (sizeof(array)/ sizeof(array[0])), v.begin());

	return 0;
}
oxana.pal вне форума Ответить с цитированием
Старый 03.03.2016, 13:11   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

Цитата:
вы про это?
Как один из вариантов иначе вы пишите фиг знает куда.
p51x вне форума Ответить с цитированием
Старый 03.03.2016, 13:13   #5
oxana.pal
Пользователь
 
Регистрация: 23.02.2016
Сообщений: 23
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Как один из вариантов иначе вы пишите фиг знает куда.
я уже поняла что итератор не будет работать, нельзя проходиться итератором бо буфер был пуст
oxana.pal вне форума Ответить с цитированием
Старый 03.03.2016, 13:23   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

прочитайте http://en.cppreference.com/w/cpp/ite...nsert_iterator если хочется итераторов
p51x вне форума Ответить с цитированием
Старый 03.03.2016, 16:46   #7
oxana.pal
Пользователь
 
Регистрация: 23.02.2016
Сообщений: 23
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
прочитайте http://en.cppreference.com/w/cpp/ite...nsert_iterator если хочется итераторов
я там не поняла как его реализовать. а есть где то пример реализации именно этой функции?
oxana.pal вне форума Ответить с цитированием
Старый 03.03.2016, 19:50   #8
oxana.pal
Пользователь
 
Регистрация: 23.02.2016
Сообщений: 23
По умолчанию

Другими словами мне нужно сделать обёртку? И там операторы *, = ,++ инициализованые?
oxana.pal вне форума Ответить с цитированием
Старый 03.03.2016, 20:30   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

да ничего вам не надо, все уже реализовано за вас - используйте
p51x вне форума Ответить с цитированием
Старый 04.03.2016, 11:45   #10
oxana.pal
Пользователь
 
Регистрация: 23.02.2016
Сообщений: 23
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
да ничего вам не надо, все уже реализовано за вас - используйте
я знаю. Но я хочу сама написать свою функцию реализации.
Написала кажиться, но что то не то вышло)
Код:
template <typename Container>
class BackInserter<Container>
{
public:
	BackInserter(Container& vec)
		: m_vec(vec)
	{}
	BackInserter& operator= (const Container& value)
	{
		m_vec.push_back(value);
		return *this;
	}
	BackInserter& operator* ()
	{
		return *this;
	}
	BackInserter& operator++ ()
	{
		return *this;
	}

private:
	Container& m_vec;
};
oxana.pal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прекрассная функция copy() Небесный PHP 0 10.04.2014 23:29
Скопировать 4 символа, начиная с третьего.(функция copy) Pascal Alexmur07 Помощь студентам 2 20.12.2013 06:50
Функция COPY. Быстродействие. Pcrepair Общие вопросы Delphi 16 21.02.2013 21:47
Не работает функция copy и delete omigos99 Паскаль, Turbo Pascal, PascalABC.NET 2 03.10.2010 13:46
Функция в STD nec117 Общие вопросы C/C++ 3 10.12.2009 22:41