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

Скорость переборки массива в зависимости от выбираемого элемента - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Транспонировать матрицу, не используя вспомогательного массива http://www.cyberforum.ru/cpp-beginners/thread723387.html
Здравствуйте. Помогите, пожалуйста, написать программу: задана матрица (двумерный массив) вещественных чисел размерностью MxN. Транспонировать матрицу, не используя вспомогательного массива....
C++ Вылетает прога Час понять не могу в чем ошибка #include <stdio.h> #include <stdlib.h> int main() { int a, b, n, m, i, j; scanf("%d %d",&n,&m); http://www.cyberforum.ru/cpp-beginners/thread723378.html
Поменять Два элемента динам. массива местами C++
... int *p=(int *)malloc(k*sizeof(int)); // Ввел динамически массив Хочу поменять местами 5 и 7 элементы: temp=p; p=p; p=temp;
Квадратная матрица A называется ортогональной C++
Квадратная матрица A называется ортогональной, если AT=A-1. Определить является ли данная матрица ортогональной: 1,00 0,42 0,54 0,66 0,42 1,00 0,32 0,44 0,54 0,32 1,00 0,22 0,66 0,44 0,22 1,00...
C++ во всех словах, имеющих нечетное количество символов, средний символ удалить. http://www.cyberforum.ru/cpp-beginners/thread723362.html
Дана строка символов. Изменить строку – во всех словах, имеющих нечетное количество символов, средний символ удалить.
C++ Сотрировка одномерного массива по условию Нужно написать алгоритм программы и сам текст программы. Номер варианта: A8B14C2 Заранее спасибо. подробнее

Показать сообщение отдельно
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235

Скорость переборки массива в зависимости от выбираемого элемента - C++

07.12.2012, 23:44. Просмотров 286. Ответов 0
Метки (Все метки)

Имеется 2 масива:
C++
1
int mas1[1000];
C++
1
2
3
struct {
    char h[25];
} mas2[1000];
Задача: получить сумму всех элементов, значения которых больше или равно 10 (к примеру).

Первый перебирается так:
C++
1
2
3
4
5
6
7
uint32_t sum=0;            // Считаем сумму
uint32_t *i=0;               // Указатель для чтения
uint32_t *s=mas1[1000];// Указатель на конец массива
while(i!=s) {
    if(*i>10) sum+=*i;
    ++i;
}
Второй так:
C++
1
2
3
4
5
6
7
uint32_t sum=0;            // Считаем сумму
uint32_t *i=0;               // Указатель для чтения
uint32_t *s=mas2[1000];// Указатель на конец массива
while(i!=s) {
    if(i->h[5]>10) sum+=i->h[5];
    ++i;
}
Второй вариант у меня отрабатывает на 3 порядка медленнее, почему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru