Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/41: Рейтинг темы: голосов - 41, средняя оценка - 4.61
 Аватар для ExeiLj
13 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 128

Как грамотно очистить двумерный vector

19.03.2013, 20:55. Показов 8083. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал
C++
1
    vector< vector<String> > Array;
Заполнил...
А как его двумерный очистить-то правильно?

C++
1
Array.clear();
Очистит их оба и этого будет достаточно, чтобы начать его использовать снова?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2013, 20:55
Ответы с готовыми решениями:

Как очистить массив по типу std::vector::clear()
Доброго времени суток, я хочу реализовать очистку массива на подобии как это сделанно в векторе, но как я залез в исходники вектора ничего...

двумерный массив ..как грамотно оформить ??
в матрице А(6 8) найти среднюю арифметическую элементов 5 го столбца и заменить его на элемент А(2 1) подскажите как это правильно...

Записать числа из файла в двумерный массив или вектор вроде такого vector<vector<int>>
Добрый день, подскажите пожалуйста как лучше и проще считывать файл. в файле записаны числа, разделенные пробелами и запятыми: 1, 2, 3,...

7
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
19.03.2013, 23:18
Цитата Сообщение от ExeiLj Посмотреть сообщение
Очистит их оба
Что значит оба? их тут не два. У тебя вектор, который содержит в себе n-ое количество векторов.
C++
1
Array.clear();
должно быть достаточно
0
 Аватар для ExeiLj
13 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 128
20.03.2013, 12:02  [ТС]
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Что значит оба? их тут не два. У тебя вектор, который содержит в себе n-ое количество векторов.
Ну то есть, да, вы правильно поняли, их больше чем два, их тут на каждую строку по массиву.

Просто .clear() не очищает память...стоит ли ее(память) вообще очищать перед новым заполнением?

Цитата Сообщение от cplusplus.com
Clear content
Removes all elements from the vector (which are destroyed), leaving the container with a size of 0.
The vector capacity does not change, and no reallocations happen due to calling this function.
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
20.03.2013, 12:47
Цитата Сообщение от ExeiLj Посмотреть сообщение
Просто .clear() не очищает память
Вы путаете понятия очищает и освобождает. Элементы векторы будут удалены, для них вызваны деструкторы. Но память, выделенная вектору (capacity) может и не освободиться, пока не будет вызван деструктор самого вектора.
0
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
20.03.2013, 13:47
Угу, а ещё объём памяти, выделенной системой процессу, не будет уменьшаться каждый раз, когда очищаешь вектор или удаляешь какие-то объекты
0
 Аватар для ExeiLj
13 / 13 / 3
Регистрация: 02.08.2012
Сообщений: 128
20.03.2013, 18:53  [ТС]
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
Угу, а ещё объём памяти, выделенной системой процессу, не будет уменьшаться каждый раз, когда очищаешь вектор или удаляешь какие-то объекты
когда я буду перезаписывать вектор, объем будет расти или просто оставаться прежним?
0
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
20.03.2013, 19:01
ну смотря сколько ты в него запишешь... Пока свободной памяти будет хватать, останется прежним
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
22.04.2014, 09:44
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Вот приблизительно такой код даст небольшое представление, что происходит при подобном создании и удалении вектора:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class C
{
public:
        C()
          {::MessageBox( NULL, String().sprintf( "constr %d", some).c_str(), "", MB_OK );}
        ~C()
          {::MessageBox( NULL, String().sprintf( "destr %d", some).c_str(), "", MB_OK );}
        C( const C &c_ )
          {::MessageBox( NULL, String().sprintf( "constr copy %d", c_.some).c_str(), "", MB_OK );}
 
        int some;
};
 
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
const unsigned x = 2, y = 3;
std::vector< std::vector< C > > v( x, std::vector< C >( y ) );
 
::MessageBox( NULL, String().sprintf( "Count of elements before clear: %d", v.size() ).c_str(), "", MB_OK );
::MessageBox( NULL, String().sprintf( "Reserved pieces of memory for elements: %d", v.capacity() ).c_str(), "", MB_OK );
 
for( unsigned i=0; i<x; i++ )
  for( unsigned j=0; j<y; j++ )
    {
    v[i][j].some = (i+1)*(j*2+1); // 1 3 5 2 6 10
    ::MessageBox( NULL, String().sprintf( "v[%d][%d]=%d", i, j, v[i][j].some ).c_str(), "", MB_OK );
    }
 
::MessageBox( NULL, "Prepare to clear vector", "", MB_OK | MB_ICONWARNING );
 
v.clear(); // 1 3 5 2 6 10
 
std::vector< std::vector< C > >( v ).swap( v );
 
::MessageBox( NULL, String().sprintf( "Count of elements after clear: %d", v.size() ).c_str(), "", MB_OK );
::MessageBox( NULL, String().sprintf( "Reserved pieces of memory for elements: %d", v.capacity() ).c_str(), "", MB_OK );
}
Цитата Сообщение от ExeiLj Посмотреть сообщение
Очистит их оба и этого будет достаточно, чтобы начать его использовать снова?
Да, clear() очистит их всех. А swap() соответственно освободит память из-под них.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2014, 09:44
Помогаю со студенческими работами здесь

Как сравнить двумерный vector?
Здравствуйте, подскажите, пожалуйста, как сравнить поэлементно двумерный vector? Вот моя реализация, верно ли это? #include...

Как с помощью <vector> сделать двумерный массив?
как с помощью &lt;vector&gt; сделать двумерный массив?

Как правильно описать функцию чтобы возвращала двумерный vector
Как правильно написать чтобы результат передался в vec1? #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; const...

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>)
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

Двумерный vector в классе
Добрый день. Возникла задача хранить в классе данные в двумерном vector. Причем, количество строк и столбцов заранее неизвестно....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru