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

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

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

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

28.03.2014, 14:20. Просмотров 515. Ответов 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; возможно есть более красивый способ такой моей реализации?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2014, 14:20     Не получается использовать std::copy как memcpy?
Посмотрите здесь:
Std::copy как скопировать часть строки массива byte? C++
std::copy C++
Ошибка в std::copy не ясна C++
Memcpy, buffer overflow. Может ли возникнуть ошибка в функции memcpy C++
C++ Как использовать std::find_if?
C++ Безопасно ли использовать memcpy при выделении памяти по ходу выполнения програмы
Как использовать std::wstring для удаление файлов C++
C++ Показать на примере, как использовать манипулятор std::ws класса istream
Как минимально просто использовать функция std::find с последовательность типа : list<myClass*> C++
C++ std::copy из vector<double> в *double, непонятный warning
Не могу использовать std C++
C++ Стоит ли использовать std::atomic?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
28.03.2014, 16:54     Не получается использовать std::copy как memcpy? #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);
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
28.03.2014, 17:02  [ТС]     Не получается использовать std::copy как memcpy? #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

Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.03.2014, 03:37     Не получается использовать std::copy как memcpy? #4
Цитата Сообщение от vbloodv Посмотреть сообщение
во всех вариантах пишет ошибку
Цитата Сообщение от vbloodv Посмотреть сообщение
o disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation...
...
Yandex
Объявления
29.03.2014, 03:37     Не получается использовать std::copy как memcpy?
Ответ Создать тему
Опции темы

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