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

Время доступа к элементам вектора. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функция pow и график http://www.cyberforum.ru/cpp-beginners/thread573453.html
Всем привет! Пишу программу, которая аппроксимирует функцию разной степенью полинома и по полученному графику делает прогноз. Так вот, в ходе работы пока что возникли 2 ошибки, которые никак не пойму. 1) Функция pow постоянно выдает ошибку pow: DOMAIN error, хотя программа продолжает работать и все нормально вычисляет. Что вообще за ошибка и как от нее можно избавиться? 2) Когда получаю...
C++ Задача на С++ подскажите Составить программу, в которой сформировать динамический двумерный массив В, состоящий из k строк и p столбцов, в отдельной функции вычислить произведение элементов, имеющих значение, кратные 3. http://www.cyberforum.ru/cpp-beginners/thread573447.html
C++ Дружественные функции
создать класс работы с единицами измерения, создать дружественную функцию для дружественного класса, переводя меры жидких тел из Бария в Британскую пинту.
C++ Поиск методом "золотого сечения"
Ребят, скоро сдавать ргр, в ней нужен алгоритм поиска элемента методом золотого сечения. Подкиньте пожалуйста этот алгоритм, столько в инете страниц перекопал и ничего не смог найти
C++ Открытие сторонней программы с кодом C++ http://www.cyberforum.ru/cpp-beginners/thread573407.html
У меня идея пришла в голову открыть с++ кодом сторонную программу, как с bat-файла с текстом start C:путь файла.ехе . Весь гугл облазил, элементарного способа не нашел. Есть идеи?
C++ Читаем ID3V2 теги в MP3 файлах Добрый день программисты! Я тут занялся ID3V1 тегами public byte TAGID = new byte; public byte Title = new byte; public byte Artist = new byte; public byte Album = new byte; public byte Year = new byte; public byte Comment = new byte; public byte Genre = new byte; подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
15.05.2012, 08:51     Время доступа к элементам вектора.
Цитата Сообщение от Toshkarik Посмотреть сообщение
Если Вы думаете по другом, готов услышать Вашу точку зрения.
Тут важно не то, что я думаю, а то, что есть на самом деле.
Провел небольшой эксперимент.
Первый код
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdio>
#include <vector>
 
int main()
{
    std::vector< int > arr(5);
    
    asm volatile("//1");
    scanf("%d", &arr[3]);
    printf("%d", arr[3]);
    asm volatile("//2");
}
В ассемблерном листинге есть следующий кусок
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    //1
# 0 "" 2
#NO_APP
    leal    12(%eax), %eax
    movl    %eax, 4(%esp)
    movl    $.LC0, (%esp)
.LEHB1:
    call    scanf
    movl    12(%ebx), %eax
    movl    $.LC0, 4(%esp)
    movl    $1, (%esp)
    movl    %eax, 8(%esp)
    call    __printf_chk
.LEHE1:
#APP
# 11 "11.cpp" 1
    //2
Второй код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdio>
#include <vector>
 
int main()
{
    int *arr = new int [5];
    
    asm volatile("//1");
    scanf("%d", &arr[3]);
    printf("%d", arr[3]);
    asm volatile("//2");
}
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//1
# 0 "" 2
#NO_APP
    leal    12(%eax), %eax
    movl    %eax, 4(%esp)
    movl    $.LC0, (%esp)
    call    scanf
    movl    12(%ebx), %eax
    movl    $.LC0, 4(%esp)
    movl    $1, (%esp)
    movl    %eax, 8(%esp)
    call    __printf_chk
#APP
# 11 "11.cpp" 1
    //2
Третий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdio>
#include <vector>
 
int main()
{
    int arr[5];
    
    asm volatile("//1");
    scanf("%d", &arr[3]);
    printf("%d", arr[3]);
    asm volatile("//2");
}
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    //1
# 0 "" 2
#NO_APP
    leal    40(%esp), %eax
    movl    %eax, 4(%esp)
    movl    $.LC0, (%esp)
    call    scanf
    movl    40(%esp), %eax
    movl    $.LC0, 4(%esp)
    movl    $1, (%esp)
    movl    %eax, 8(%esp)
    call    __printf_chk
#APP
# 11 "11.cpp" 1
    //2
Как видно, в первом случае все заинлайнилось(есть только 2 call'a - printf и scanf).
И вообще, эти 3 листинга практически эквивалентны.
 
Текущее время: 11:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru