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

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

Войти
Регистрация
Восстановить пароль
 
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
#1

Не получается использовать std::copy как memcpy? - C++

28.03.2014, 14:20. Просмотров 543. Ответов 3
Метки нет (Все метки)

Получил задание переписать свою код:
Кликните здесь для просмотра всего текста
Поля x, y указывают координаты, куда должен быть помещен файл - кадр,
а width, height ширину и высоту области, которая выделена в атласе под файл - кадр.
Важно, что ширина и высота загружаемого файла могут быть больше, чем width, height !!!
Это связано с тем, что при создании атласа может быть применено масштабирование.
Поэтому необходимо уметь загружать файл - кадр на атлас с учетом масштаба. */


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    int src_pitch = ...; 
    int dst_pitch = ...;
    int src_w, src_h, dst_w, dst_h; // все int естественно проинициализированны
 
    DWORD* src = hge_->Texture_Lock(src_tex, true, 0, 0, src_w, src_h);
    DWORD* dst = hge_->Texture_Lock(atlas_index_, false, x, y, dst_width, dst_height);
 
    if (src_w <= dst_width)
    {
        for (int i = 0; i < src_h; ++i)
        {
            int dst_stride = i*dst_pitch;
            int src_stride = i*src_pitch;
            size_t size = sizeof(DWORD)*src_w;
 
            memcpy(&dst[dst_stride], &src[src_stride], size);
            //std::copy(...);
        }
    }
можно ли её использовать таким образом, гуглил по запросу how use std::copy like memcpy народ ненавязчиво предлагает использовать std::back_inserter; возможно есть более красивый способ такой моей реализации?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2014, 14:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не получается использовать std::copy как memcpy? (C++):

Std::begin() ,std::end(),std::copy - C++
...// int main() { std::vector&lt;double&gt; data;//Работает cout &lt;&lt; std::begin(data); double *data=new double; ...

Стандартный поток и STL (std::copy to std::cout) - C++
#include &lt;iostream&gt; #include &lt;sstream&gt; #include &lt;algorithm&gt; #include &lt;functional&gt; #include &lt;string&gt; using namespace std; ...

Как можно еще использовать std::placeholders вне в связки с std::bind? - C++
Добрый день! Как можно еще использовать std::placeholders вне в связки с std::bind?

Std::copy как скопировать часть строки массива byte? - C++
Вот из этой строки: BYTE pbHash; Нужно скопировать содержимое с 0й по 15ю ячейку, в эту строку: BYTE bAesKey; Так будет? ...

std::copy - C++
typedef std::list&lt;size_t&gt; Path; Path::iterator _it; Path path; std::copy( _it, path.end(), std::ostream_iterator&lt;size_t&gt;( std::cout,...

Ошибка в std::copy не ясна - C++
здравствуйте, есть следующий код, в котором возникает ошибка во время выполнения: std::string array1 = { &quot;hello&quot;, &quot;hello&quot;, &quot;hello&quot;,...

3
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,199
Завершенные тесты: 1
28.03.2014, 16:54 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
std::copy(dst + dst_stride, dst + dst_stride + src_w, src + src_stride);
// или C++11
std::copy_n(dst + dst_stride, src_w, src + src_stride);
1
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
28.03.2014, 17:02  [ТС] #3
Кликните здесь для просмотра всего текста
Error 1 error C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' c:\program files (x86)\microsoft visual studio 12.0\vc\include\xutility 2132 1 particles_wrapper

во всех вариантах пишет ошибку

Не по теме:

P.S. компилятор VS2013

0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.03.2014, 03:37 #4
Цитата Сообщение от vbloodv Посмотреть сообщение
во всех вариантах пишет ошибку
Цитата Сообщение от vbloodv Посмотреть сообщение
o disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation...
...
1
29.03.2014, 03:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2014, 03:37
Привет! Вот еще темы с ответами:

что использовать std::cout или просто using namespace std? - C++
Приветствую! Сейчас учу С++, постигаю азы так сказать. В арсенале две книги - Джефф Кент, &quot;Основы программирования &quot; и Х.М....

Как использовать std::find_if? - C++
Добрый день! Хочу использовать find_if, в реализации сортировки вставками. Но с синтаксисом у меня проблема. Помогите исправить код ...

Можно ли использовать memcpy для увеличения размера динамического массива? - C++
char *x = &quot;asdsadasdasdasdasdasdasdasdasd&quot;; char *t = new char; memcpy(t, x, 12); t = '\0'; printf(&quot;%s&quot;, t);Компилятор не...

Memcpy, buffer overflow. Может ли возникнуть ошибка в функции memcpy - C++
Бывает ли на практике такое, что код #define size 1000; // some value int x, y; /* ... */ memcpy(y, x, (size + 1) * sizeof(int)); ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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