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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Union
17 / 17 / 2
Регистрация: 16.08.2010
Сообщений: 252
#1

Локальный или глобальный массив векторов - C++

01.07.2012, 01:35. Просмотров 712. Ответов 5
Метки нет (Все метки)

Везде в литературе рекомендуется создавать локальные объекты. Основные аргументы - они легче оптимизируются и безопаснее.
У меня такия ситуация:
Есть массив из 1000 векторов. Если я создам его глобальным, то в цикле на каждой итерации их (вектора в массиве) будет необходимо очищать, что впринципе не затратно. Если же я сделаю его локальным, то не понятно что будет происходить. Возможно на каждой итерации вектора будут создаваться снова и под них будет выделяться память... или же компилятор оптимизирует до простой очистки...
Что всётаки лучше в таком случае, глобальный или локальный массив?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2012, 01:35     Локальный или глобальный массив векторов
Посмотрите здесь:

Что содержат массивы (глобальный, локальный блоки) - C++
Что содержат sa, ia, sa2, ia2 ? Только сразу скажу, что меня не интересует, что выведет компилятор. string sa; int ia; int...

Дан массив. Найти в нем глобальный минимум или максимум - C++
Помогите пожалуйста! Очень нужно решение Дан массив А(М). Найти в нем глобальный минимум или максимум.

Есть два потока и глобальный массив, могут ли потоки перепутать элементы глобального массива или другого контейнера? - C++
Начать с массивов, допустим То есть ситуация такая: пусть имеется два потока и глобальный массив элементов int из двух элементов, один...

Ввести массив вещественных чисел. Вывести локальный экстремум ( минимум или максимум), ближайший к нулю. - C++
Как ввести массив вещественных чисел, чтобы вывести локальный экстремум ( минимум или максимум), ближайший к нулю. Помогите плз.

Глобальный динамический массив - C++
В общем проблема вот в чем, пытаюсь сделать глобальный динамический массив структур но что-то идет не так. Странная ошибка с ";" при...

Глобальный динамический двумерный массив - C++
Вообще то задача на Си, но в разделе мало людей, поэтому пишу тут, помогите пожалуйста. Вообщем есть задача считать файл в функции init(),...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programm1r
46 / 45 / 1
Регистрация: 19.06.2012
Сообщений: 134
01.07.2012, 01:50     Локальный или глобальный массив векторов #2
Локальный массив создается (выделяется) на стеке, т.е. после его объявления в нем будет мусор, и естественно его надо будет очистить. Глобальный массив создается в сегменте данных и при объявлении (как правило) обнуляется. Оба массива, при обработке в цикле (не знаю что вы будете с ним делать) вам придется очищать. Само собой при завершении функции, внутри которой вы объявили локальный массив, он (массив) уничтожиться, а глобальный нет. Так что смотрите что вам необходимо и выбирайте...
Union
17 / 17 / 2
Регистрация: 16.08.2010
Сообщений: 252
01.07.2012, 01:54  [ТС]     Локальный или глобальный массив векторов #3
В массиве векторов мусора не будет... его ж вообще не нужно инициализировать
Поэтому в случае глобального массива - мне его нужно чистить на каждой итерации, а в случае локального - он чистый.
И вот мне было не понятно - чистый он потому что просто чистится или полностью пересоздается.
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.07.2012, 08:39     Локальный или глобальный массив векторов #4
Пересоздается, но это не очень затратно(хотя выделение/очищение памяти происходит).
Вообще, о таких мелочах должен заботится компилятор.
Глобальным этот массив не стоит делать ни в коем случае, ибо плохой стиль.
Catstail
Модератор
22515 / 10920 / 1774
Регистрация: 12.02.2012
Сообщений: 18,067
01.07.2012, 09:03     Локальный или глобальный массив векторов #5
Локальные объекты рекомендуется использовать вовсе не из-за чистки, а из-за того, что код с локальными объектами более надежен - нет взаимного влияния процедур/функций. В принципе это - нулевой уровень инкапсуляции (см. принципы ООП). А чистить в С/С++ перед использованием я бы рекомендовал всё (благо, в C++ есть отличные возможности инициализации при создании).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2012, 09:46     Локальный или глобальный массив векторов
Еще ссылки по теме:

Глобальный вектор. Почему на выходе этот массив пуст? - C++
юзаю либу вектор. почему на выходе этот массив пуст? std::vector<int> qw;//global int main() { int i=1; qw.push_back(i); ...

Строковый массив (объявить пустой глобальный строковый массив из 16 элементов) - C++
Подскажите, как объявить пустой глобальный строковый массив из 16 элементов? в качестве элементов будут указаны пути к графическим...

Построение динамического массива в функции и его перевод в глобальный динамический массив - C++
Здравствуйте, моя проблема заключается в передаче построеного в функции динамического массива fdarray в глобальный динамический массив...

Локальный указатель на локальный строковый литерал - C++
Здравствуйте. Подскажите, пожалуйста, почему локальный указатель, созданный в функции, не уничтожается после вызова функции? То есть мы...

Массив векторов - C++
Как мне создать масив, хранящий в себе вектора??? Вот допустим есть два вектора vector <Objects> s1; // Вектор хранит в...

Массив векторов - C++
Помогите разобраться , не знаю как создать массив из структур: #include <iostream> #include <cmath> using namespace std; class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
01.07.2012, 09:46     Локальный или глобальный массив векторов #6
Цитата Сообщение от Union Посмотреть сообщение
И вот мне было не понятно
Создай эту 1000 векторов ПЕРЕД циклом и тогда работа с ними будет выглядеть так же, как и с глобальными. Т.е. ты будешь вектора очищать, но удаляться они не будут. И код красивый и "затрат" на создания векторов не будет.
Yandex
Объявления
01.07.2012, 09:46     Локальный или глобальный массив векторов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru