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

Приоритет. Обращение к элементу по постинкременту. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск значения минимального листа дерева/ошибка http://www.cyberforum.ru/cpp-beginners/thread1130983.html
всем привет, такая проблема: в чем ошибка поиска значения минимального листа? #include <tchar.h> #include <stdio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <Windows.h> typedef struct derevo {
C++ Глубокая неопределённость Не смог придумать более осмыслнное название темы, потому что сам не знаю что ищу и в том ли я разделе. Вообщем моя цель такова: Создать небольшую программу, которая будет установлена у 20+ людей. Она должна синхронизировать свои данные в некотором роде. Поясню: сть 3 человека грубо говоря в чате, очень грубо. И когда один пишет, другие двое-четверо должны видеть что он пишет или писал в... http://www.cyberforum.ru/cpp-beginners/thread1130979.html
C++ Определить знак зодиака по дате
Введите число и месяц рождения. Определить, под каким знаком зодиака рожден человек в этот день. (Считается, что каждый знак зодиака начинает оказывать свое влияние с 22 числа каждого месяца). Через принт ф и скан ф
Ввод из файла массива и вывод результат в файл среднее арифметическое C++
Задание такое вычислить среднее арифметическое элементов массива, массив задан входным файлом. Результат записать в выходной файл. Как примерно посчитать среднее арифметическое в массиве знаю, с выводом и вводом проблемы, Помогите пожалуйста. #include <conio.h> #define SIZE 5 // размер массива void main() { int a; //массив int n = 0; // кол-во ненулевых эл-тов int i; // индекс...
C++ Подсчет числа слов в тексте. Слишком много аргументов для вызова http://www.cyberforum.ru/cpp-beginners/thread1130948.html
Пожалуйста помогите, нужно подсчитать количество слов в тексте, у меня выводит 2 ошибки: Ошибка 1 error C2197: bool (__cdecl *)(std::_Tree_iterator<_Mytree>): слишком много аргументов для вызова C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\algorithm 3720 Ошибка 2 error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции C:\Program Files (x86)\Microsoft...
C++ Максимальный по модулю элемент матрицы добавить к элементам из заданного интервала [a, b] всех четных столбцов Помогите решить задачу с использованием вектора и итераторов: Дана целая матрица A. Если минимальный элемент каждой последующей строки меньше минимального элемента предыдущей строки, то максимальный по модулю элемент матрицы добавить к элементам из заданного интервала всех четных столбцов матрицы. Найти номер первой строки, не содержащей ни одного четного элемента, и циклически сдвинуть в ней... подробнее

Показать сообщение отдельно
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
28.03.2014, 12:11     Приоритет. Обращение к элементу по постинкременту.
Цитата Сообщение от dimcoder Посмотреть сообщение
Ну лучше использовать ++i т.к. быстрее, потому что не создается дополнительной переменной
Для целочисленного типа в принципе не имеет значения. А вот для каких-нибудь мощных контейнеров или пользовательских типов да.

Чтобы не быть голословным прибегну опять к своим любимым картинкам:
Но сначала код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
using namespace std;
 
class Count
{
public:
        int i;
 
        Count():i(0)
          {cout << "Constructor void \t" << this << endl;}
        Count( int i_ ):i( i_ )
          {cout << "Constructor int \t" << this << endl;}
        Count( const Count &c )
          {
          this->i = c.i;
          cout << "Constructor copy \t" << this << endl;
          }
 
        ~Count()
          {cout << "Destructor \t\t" << this << endl;}
 
 
        Count &operator = ( const Count &current )
          {
          cout << "=\t\t\t" << this << endl;
 
          if( this == &current )
            return *this;
 
          this->i = current.i;
          return *this;
          }
 
 
        friend const Count &operator ++ ( Count &current );      // Пре
        friend const Count operator ++ ( Count &current, int ); // Пост
};
const Count &operator ++ ( Count &current ) // Пре
{
  cout << "++i\t\t\t" << &current  << endl;
 
  current.i = current.i + 1;
  return current;
}
const Count operator ++ ( Count &current, int ) // Пост
{
  cout << "i++\t\t\t" << &current  << endl;
 
  Count notIncrementCount( current.i );
  current.i = current.i + 1;
  return notIncrementCount;
}
 
int main()
{
{
for( Count count=0; count.i<2; count++ )
  {
  cout << "loop count++" << endl;
  }
}
cout << endl;
{
for( Count count=0; count.i<2; ++count )
  {
  cout << "loop ++count" << endl;
  }
}
cin.ignore();
return 0;
}

Приоритет. Обращение к элементу по постинкременту.

Как можно, посадив зрение, разглядеть на картинке, при одинаковых количествах итераций, для постинкремента выполняется гораздо больше операций, чем для преинкремента. Особенно если учесть, что в конструкторах может быть какое-нибудь громоздкое обращение к файлу (по сети(с того света)) или выделение просто ниемоверного количества памяти, что приведет к таким жутким последствиям, что уничтожение Сирии Рамсесом вторым покажется мелкой неприятностью.
Но для простого int заморачиваться не стоит. Тем более, что компилятор скорее всего и сам все это оптимизирует.
 
Текущее время: 09:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru