|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||||||
Непонятные функции std::vector15.05.2013, 19:21. Показов 4277. Ответов 39
Метки нет (Все метки)
Здорова господа!
Тут я решил своими словами описать стандартные контейнеры их всего 14. Решил описать с примерчиками возможности каждого контейнера, оно и мне полезно стл как раз изучу, да и мб новичок новичку пригодится, а то на офф сайте фиг, что поймешь, а русских ресурсов мало, поэтому решил свой ресурс создать по стл. Ну а что там стл маленькая 14 контейнеров и 60 алгоритмов все го то. Ну ладно в общем щас описываю std::vector и тут у меня возникла проблема никак не пойму, что делают эти методы capacity(), size() и reserve(). Пытаюсь посмотреть, что выводится:
И еще reserve() допустим оно меняет размер этой capacity но оно почему то меняет только в большую сторону. От если я пытаюсь сделать больше то оно меняет на больше, но когда я делаю меньше оно меньше не делает? Добавлено через 5 минут Еще эта функция не понятна shrink_to_fit(), она уменьшает capacity но меньше чем 30 в примере выше не делает?
0
|
||||||
| 15.05.2013, 19:21 | |
|
Ответы с готовыми решениями:
39
Передача функции указатель на элемент std::vector<std::string> Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию? |
| 15.05.2013, 20:14 | |
|
Не по теме: Ну да, STL вещь не большая. И без разницы, что в стандарте ее описание занимает кучу страниц текста :D
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 15.05.2013, 20:19 [ТС] | ||
|
Ну в принципе я думаю если протестить для примера вектор vector<int> у которого size()= 0, а capacity()= 10 , то я думаю sizeof() для этого вектора выведет 10 * 8 , то есть 80 байт. Просто оно зарезервировано и есть в объекте хотя и без доступа. Ну это если подумать.
0
|
||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 15.05.2013, 20:21 | ||
|
1
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 15.05.2013, 20:25 [ТС] | |
|
0x10, ну я там ошибся 4 байта int весит. 40 байт будет щас еще протестю.
0
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
| 15.05.2013, 20:27 | |
|
1
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||
| 15.05.2013, 20:29 | ||||||
|
ninja2, еще код для размышлений
1
|
||||||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||||||
| 15.05.2013, 20:32 [ТС] | ||||||
|
0x10, 20 выводит почему то хотя должно по идее 40 вывести ведь в векторе место под 10 int должно резервироваться, что то короче не так.
0
|
||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 15.05.2013, 20:33 | |
|
Ну на самом деле для наглядности вывести sizeof объекта можно еще и до махинаций с размером/емкостью. Ну да не в этом суть.
Добавлено через 1 минуту ninja2, потому и задаю вопрос: а как бы Вы реализовали динамический массив внутри? И как разрулили бы ситуацию, когда size == 16, capacity == 16 и мы пытаемся добавить еще один элемент в массив?
1
|
|
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
| 15.05.2013, 20:37 | |
|
0
|
|
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
|||||||
| 15.05.2013, 20:37 | |||||||
1
|
|||||||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 15.05.2013, 20:40 [ТС] | |
|
0x10, Ну я понял тоже 20 выводит, значит что? Это значит что просто в объекте vector может находится допустим 5 членов int* или два чара и один int, что бы в сумме было 20 байт. Ведь объем объекта измеряется объемом его членов (методы ничего не весят).
Да значит реальный объем вектора, чтобы посчитать то нужно capacity()*4 или как? Или это не нужно?
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 15.05.2013, 20:40 | ||
|
Не по теме: Но если честно, расстановки точек над ё в конкретно этом вопросе мне кажутся занудством. =)
1
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 15.05.2013, 20:42 [ТС] | ||
|
0
|
||
|
|
||
| 15.05.2013, 20:45 | ||
|
Но тем не менее все зависит от конкретной задачи... а коэффициент 1.5...2 это для среднестатистического случая.
1
|
||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 15.05.2013, 20:51 | |
|
Собственно, главное, что я хотел услышать - это слово new. Т.е. понимаем, что в качестве поля класса будем хранить указатель. А его sizeof ну никак не равен размеру всех элементов, память под которые выделена с помощью new[].
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||
| 15.05.2013, 20:54 [ТС] | |||
![]() Добавлено через 2 минуты
0
|
|||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|||||||
| 15.05.2013, 20:58 | |||||||
1
|
|||||||
| 15.05.2013, 20:58 | |
|
Как изменять размер std::vector<std::vector>? Вывести значения std::vector<std::vector<int*> > std::vector, классы и функции. Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator>
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|