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

Оптимизация. static объекты - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить метод решения матрицы http://www.cyberforum.ru/cpp-beginners/thread437589.html
Доброго времени суток! Есть код программа, которая решает систему уравнений. Помогите, пожалуйста, определить какой именно способ (метод Крамера или Гаусса) для решения систем уравнения в этом коде...
C++ Поиск наибольшего и наименьшего значения в массиве. Как в одномерном массиве a найти наибольшее и наименьшее числа ? :) http://www.cyberforum.ru/cpp-beginners/thread437555.html
Не работает программа C++
Код взят из книжки по С++. В Visual C++ этот код не пашет. Выдает проглеммы с подключением библиотек. Проблемма в коде или в компиляторе? Выводит 1>d:\visual studio c++ express...
открыть obj файл C++
Собственно в чем проблемма :Есть obj файл мне нужно его открыть и посматреть код.При открытии файла какието неподержываемые символы есть а кода нет.Как можно мне его открыть?
C++ Как следить за числом с плавающей запятой? http://www.cyberforum.ru/cpp-beginners/thread437484.html
к примеру у меня есть число,и к нему постоянно прибавляют дроби.У этого числа увеличивается часть с плавающей запятой следовательно.Так вот мне нужно прекратить прибавлять дроби к этому числу,если...
C++ Как перевести из символа в число и после наоборот Доброго Вам времени суток форумчане! Сразу к делу. Сталкнулся с проблемой в учебнике Лафоре есть пример //parse.cpp разбор арифметического выражения Так вот я его собрался сделать но сам по своему.... подробнее

Показать сообщение отдельно
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133

Оптимизация. static объекты - C++

29.01.2012, 21:12. Просмотров 962. Ответов 3
Метки (Все метки)

Страуструп написал такую функцию для его книги "принципы и практика использования C++":
( обратите внимание на массив SuffixMap )
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
Suffix::Encoding get_encoding(const string& s)
{
    struct SuffixMap 
    { 
        const char*      extension;
        Suffix::Encoding suffix;
    };
 
    static SuffixMap smap[] = {
        {".jpg",  Suffix::jpg},
        {".jpeg", Suffix::jpg},
        {".gif",  Suffix::gif},
    };
 
    for (int i = 0, n = ARRAY_SIZE(smap); i < n; i++)
    {
        int len = strlen(smap[i].extension);
 
        if (s.length() >= len && s.substr(s.length()-len, len) == smap[i].extension)
            return smap[i].suffix;
    }
 
    return Suffix::none;
}
В этой функции создается массив static SuffixMap smap[].
Почему он статический? Потому что большой и чтобы его каждый раз не создавать его сделали статическим?
Вообще когда надо делать большие неизменяемые( как этот ) объекты статическими?
Если мы знаем, что функция вызывается много раз, то тут вроде как понятно, что надо сделать объект статическим. Но ведь не всегда известно сколько раз будет вызываться функция.
Это ведь эквивалентно выделить память и не освобождать ее до конца выполнения программа. Только массив находится в статической памяти, а выделенная память в куче. Но все равно в итоге и в той и в другой памяти это занимает место.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru