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

Какая операция быстрее, постинкремент, или преинкремент? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Утечки памяти http://www.cyberforum.ru/cpp-beginners/thread376843.html
Здравствуйте, уважаемые господа. Недавно заметил через диспетчер задач, что в моей программе присутствуют утечки памяти. Кол-во операторов new совпадает с delete, а new — с delete, malloc не использую. Из-за чего ещё они могут возникать? К сожалению, сейчас crtdbg.h ни о чём не сообщает.
C++ Программа на "Стеку" Привет всем. Вообщем нужно сделать программу и стеку, я в этом полностью не понимаю. Вот задание: Реализовать стек, в котором указатель вершины стека указывает на последний элемент стека, а не на первый свободный элемент массива. На входе задаются последовательность целых чисел. Если число четное, то оно добавляется в стек, если нечетное, то из стека извлекается один элемент. После обработки... http://www.cyberforum.ru/cpp-beginners/thread376830.html
C++ помогите
Потрібно написати програму,яка підраховує кількість від*ємних елементів масиву
функции пользователя C++
дано натуральное число n. определить , если это возможно, пару х,у таких натуральных чисел, что n=x^2+y^2. помогите решить задачу на турбо си ,заранее спасибо) используя функции
C++ С C# на С++ http://www.cyberforum.ru/cpp-beginners/thread376812.html
ребят, помогите!! есть программа по многопутевому слиянию на С#, очень надо переписать на С++. С++ не знаю...в чем будет разница??? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections;
C++ Написать программу, сортирующую список фамилий студентов в группе. 1)Дано слово из четного числа букв. Поменять местами первую букву со второй, третью – с четвертой и т.д. 2)Написать программу, сортирующую список фамилий студентов в группе. Помогите пожалуйста,у меня большой завал,не как не могу разобрать. Добавлено через 1 час 37 минут Никто мне так и не поможет(((( подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
02.11.2011, 20:31     Какая операция быстрее, постинкремент, или преинкремент?
Цитата Сообщение от hugo007 Посмотреть сообщение
какая операция быстрее: постинкремент, или преинкремент?
и почему?
как их можно записать на ассемблере?
Для встроенных типов обычно различия не существенны, так как в любом случае увеличение значения происходит с помощью одной и той же машинной команды в соответствующем регистре. Разница лишь в дом, что при постинкриментной операции затем значение из регистра должно переслаться по двум адресам: в приемник этого значения и в исходный объект.

Ежели приемник увеличенного значения не используется, как, например, в цикле вида

C++
1
for ( int i = 0 ; i < n ; i++ )
то разницы вообще никакой нет.

Для классов естественно такое различие более заметно, так как создается временный объект и в него копируется исходный, а затем временный объект возвращается из функции-оператора по значению. И хотя компиляторы могут оптимизировать такие операции копирования временных объектов, тем не менее все равно создание временного объекта занимает время.

Семантически различие наглядно демонстрируются в следующем обобщенном примере

C++
1
2
3
4
5
6
7
8
T & operator ++();
 
const T operator ++( int )
{
   T temp( *this );
   ++*this;
   return ( temp );
}
То есть видно, что во втором случае помимо самого оператора инкримента ++*this; еще создается временный объект и этот временный объект возвращается в качестве результата. То есть по крайней мере будет один раз вызван конструктор копирования для выражения T temp( *this ); и для возврата значения из оператора.

Что касается ассемблера, то набор команд зависит от платформы.
 
Текущее время: 05:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru