memcpy
стоит быть осторожным. Функция дает ожидаемый результат только для тривиальных типов.memcpy
- это функция прямого копирования блоков памяти. Функция ничего не знает про инвариант объекта в памяти.std::copy
, наоборот, умеет понимать инварианты объектов и производить копирование не нарушая инвариант источника. Дополнительно, эта функция не даст скомпилировать код если тип объектов не является копируемым.std::begin
и std::end
являются частью C++11. Если тебе компилятор пишет что не может найти их объявление, значит ты просишь его собирать код используя стандарт до C++11. x1,y1,x2,y2
не читается никак, равно как и непонятно, откуда у тебя берется угол (0-360)
. strcpy_s(s, strlen(s), source);
- это прекрасный способ сделать ультраненадежный вызов "надежной" функции. #!/usr/bin/env python
и # -*- coding: utf-8 -*-
недостаточно. Еще нужно сам файл сохранить в кодировке UTF-8, желательно с BOM. Старайся в целом все .py файлы сохранять в кодировке UTF-8 с BOM. size_t
использовать следует только тогда, когда значение отражает количественную или позиционную характеристику блока памяти. Для произвольных дискретных итераций следует использовать подходящий по размеру целочисленный тип, но не size_t
, т.к. только в этом случае он не подходит по причине своей неоднозначности.size_t
способен хранить размер теоретически максимально возможного объекта, включая и размер массива. При этом считается, что объект, размер которого не может содержаться в значении типа size_t
, является плохо сформулированным.size_t
, т.к. все вопросы размера и позиции блока памяти укладываются в размер регистра общего назначения - в 4 байта. Размер типа size_t
на архитектуре x86 равен 32 битам. На архитектуре x64 тип size_t
уже будет занимать положенные 8 байт. С мобильными архитектурами все точно так же. Об этом и говорит статус Implementation-defined
в стандарте: размер количественной или позиционной характеристики блока памяти определяется деталями целевой архитектуры и всегда достаточно велик чтобы безопасно хранить свое значение.А если у вас пара десятков итераций в прыжке - то вам и int слишком большой, возьмите что-нибудь поменьше.
authAndAccess
, что она должна делать по докментации?Если же вам действительно мало 32-битного числа - то вы не можете использовать ни int ни size_t для этих целей, вы должны использовать именно 64-битное целое независимое от платформы.
size_t
? Желательно со ссылками на документацию и стандарт языка. прошу перечитать сообщение, на которое был мой первый ответ и понять уже наконец, о чём идёт речь
/// Большая поверхностно документированная проприетарная библиотека с горой спагетти-кода...
/// Где-то на окраине одного из заголовочных файлов.
typedef const T T1; // GenericServiceHandler
...
/// Где-то в пространстве функции твоего проекта.
const T1 c;
Подскажи, а зачем копировать массив до его инициализации? Ведь инициализация у тебя происходит ниже, вот тут:
random_array(array);
Если тебе хочется отсортировать одинаковые данные разными алгоритмами, тебе стоит подойти к вопросу непосредственно.
Ты хочешь опробовать некие алгоритмы на одинаковых данных, значит тебе нужен своего рода эталон. Вот и заводишь память под эталонный массив.
Перед запуском алгоритма эталонный массив копируется во временный, а далее алгоритм запускается уже строго на временном массиве.
И, опять же, очень важно вкладывать смысл в имена. Этот момент у тебя все так же провисает.