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

Что делает данный код и зачем такое кому-нибудь может понадобиться? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что делают операторы switch/case http://www.cyberforum.ru/cpp-beginners/thread39069.html
что делают функции : switch ? case ?
C++ Как узнать дату изменения файла? Как узнать дату изменения файла? Покажите, пожалуйста, на примере http://www.cyberforum.ru/cpp-beginners/thread39061.html
Работа со строками символов C++
Помогите решить пжл. Дан текст (2-3 строки) в файле F1. Описать функцию преобразования строки, которая заменяет все повторные вхождения символа пробел одним символом пробела, в начало строки добавляет слово "НАЧАЛО", а в конец слово "КОНЕЦ". Преобразовать все строки текста и записать новый текст в файл F2.
Гомоку ИИ C++
Люди! я в тупике...пишу прогу - игра "гомоку"(крестики нолики 5 в ряд)...сделал ее для двоих игроков...вроде нормально пашет....теперь надо сделать ИИ (3 уровня сложности). Все перепробовал - тупит жостко...если можете - подскажите плз Добавлено через 52 минуты 25 секунд розкажу в кратце....создал матрицу, крестик = 1, нолик = -1... for(i1=0;i1<nstr;i1++){ for(j1=0;j1<nstb;j1++){...
C++ Вычислить, сколько раз каждый элемент массива входит в массив http://www.cyberforum.ru/cpp-beginners/thread39022.html
1. Дано действительные числа q, r, b, c, d и натуральное n ( n >= 2 ). Пусть x(0)=c; x(1)=d; x(k)=qx(k-1)+rx(k-2)+b , где k=2, 3, . . . Получить х(n) (всё что в скобках-нижний регистр). 2. Задано одномерный массив целых чисел A. Вычислить, сколько раз каждый элемент массива входит в массив. ----------------------------- вот так надо сделать: есть массив чисел 454621435896521...
C++ прибытие самолетов #include<iostream.h> #include <math.h> #include<stdlib.h> #include <iomanip.h> #include<conio.h> #include<string.h> struct times { int hour; int minute; подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17474 / 5712 / 364
Регистрация: 30.03.2009
Сообщений: 15,685
Записей в блоге: 26
09.06.2009, 12:29     Что делает данный код и зачем такое кому-нибудь может понадобиться?
Цитата Сообщение от CartmanRules Посмотреть сообщение
т.е. данный код (который с функцией send) можно назвать по стуи развернуутым циклом, если я правильно понял
Я не знаю, как правильно по-русски, по-английски называется unrolled loop. По сути да, это раскрученный цикл с хорошим preloop'ом

Цитата Сообщение от CartmanRules Посмотреть сообщение
и еще вопрос в чем такое принципиальное отличие между
Щас положу два кода, чтобы перед глазами было

C
1
2
for(int i =0;i<count;i++)
  *to++=*from++;
C
1
2
for(i;i<count;i++)
  to[i]=from[i];
По принципу работы разницы нет. Но здесь есть разница по скорости работы. Т.е. для первого кода на каждой итерации цикла помимо пересылки, инкрементации i и перехода делается две операции сложения (to++, from++, i++). Во втором случае дооплнительных операций больше: т.е. нужно вычислять адрес to[i], который равен (to + i *sizeof(char)). Т.е. к двум операциям сложения у тебя добавились две операции умножения. В случае с char'ом его размер равен единице, а потому операцию умножения компилятор выкинет. Но вот если копирование будет проходить int'ами, то от умножения уже никуда не деться (хотьи реализовано оно удет через сдвиг, но тем не менее две лишние операции в цикле появятся).

Приличный оптимизирующий компилятор скорее всего сведёт второй код к первому (случай у нас простой), но вот в более сложном случае не факт, что это получится сделать
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru