Во-первых, окно можно активировать перед нажатием. Можно его переместить за экран, чтобы не мешалось. После нажатия кнопки вернуть назад. Во-вторых, что именно вы посылаете в SendMessage?
Интересно, что быстрее, вроде как в случае разварота каждый элемент перемещается 2 раза, а не 1, как у меня. Но у меня больше проверок и доступ к памяти не линейный.
Наколеночный бенчмарк показал, что ваш вариант примерно в 2-2.5 раза быстрее что на мелких массивах, что на больших.
1eg10n, Вам все-равно не надо ничего выпрямлять. Изменили размер буфера, занулили часть 0xFE00'4000 до 0xFE00'4000+k, перетащили "начало" с позиций k до 0xFE00'4000 в позиции с 0xFE00'4000+k до 0xFE00'8000
1eg10n, Вообще идея так себе. Если вы хотите увеличить размер буфера, вам придется выделить память и элементы в новую память скопировать. Ну так делайте это двумя кусками. Вам не надо сначала элементы "выпрямлять", чтобы потом их одним куском в новую память засунуть. Ну, будет у вас 2 вызова memcpy вместо одного.
Ну, или, если вы vector используете, то надо будет после увеличения размера кусок с началом данных перетащить из середины vector в конец.
Alexandroppolus, Так нет же, у автора ограничение в 2 элемента только на время циклического сдвига массива. А сдвиг нужен. чтобы эти данные в увеличенном массиве сохранили порядок.
hint000, Нет, тут надо доказывать, потому что у вас есть lim f(x) = b. А заменяете вы в выражении "lim g(f(x))" совершенно другой набор символов "f(x)" (тут нет lim). Еще и заменяется он на y, который стремится к b, а не на b.
Это как раз мозговыносящие свойства пределов, с ними иногда нельзя работать просто как с числами. И поэтому с нотацией надо работать аккуратно, если вы lim вдруг выкините, то уже казалось бы можно будет применять подстановку согласно логике, и все сломается.
Но если у вас в каком-то выражении вдруг встретится именно lim f(x), то его можно даже не зная про пределы заменять на b.
floppa322, Подстановка в уравнение - это логика. Если вам говорят, что C=A, то можно вместо A написать C везде, где выхотите. Просто формально заменив буковки на равное им же значение. Вы же при урпощении выражения (X+Y)^2-2XY = X^2+Y^2 при раскрытии скобочек пользуетесь тем, что (a+b)^2=a^2+2ab+b^2 ничего не доказывая?
floppa322, Ну так у вас же x = f'(y). В этом случае g(f′(y), y) = 0 <=> g(x,y) = 0 ибо подстановка. Это какая-то аксиома, наверное, равные буковки можно использовать взаимозаменяемо.
Acaunt, Ах, а двойной unlock у вас потому что вы там заводите scoped_lock, который при выходе их функции уничтожается и вызвыает unlock внутри. И плюс к этому вы руками unlock закоментированный вызываете. Так делать нельзя. Или вы руками делаете lock()/unlock(), или (что лучше) используете scoped_lock, но руками ничего не вызваете.
rav_pr, Я не уверен, но кажется к такому определению сложения точек на эллептической кривой пришли из диафантовых уравнений. Вот есть у вас уравнение и пара его решений. Вам хочется получить больше решений. И вот складывая вот так вы получаете какре-то другое решение. Если просто пересекать с прямой, то потом из этих 3 точек вы, как ни складывайте их, ничего нового не получите. А если результат сложения еще и отразить, то потом можно его с предыдущими точками складывать и получать что-то новое.
Потом выяснили, что на некоторых кривых можно просто одно и то же решение складывать само с собой таким образом и получить вообще все решения уравнения и оно закрепилось, ибо теперь кривая оказалась циклической группой - весьма полезным в математике объектом.
Так-то, сложение могли бы определить как угодно, надо только что бы результат тоже на кривой лежал. Но исторически вот этот способ оказался интересен его и закрепили.
Alex XYZ, Там алгоритм за линию практически (логарифм от точек пересечения с прямой, а их обычно не много). Куда уж быстрее. Ну только если у вас многоугольник не выпуклый, но это не ваш случай похоже.
Alex XYZ, алгоритм работает для любых наклонов прямых, там нигде горизонтальность не используется. Про + и - оффсеты не понял. Вы разрезаете фигуру на 2 части? Или пересекаете с несколькими прямоугольниками?