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

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

Войти
Регистрация
Восстановить пароль
 
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

Кодирующие контейнеры? - C++

07.07.2013, 14:05. Просмотров 502. Ответов 17
Метки нет (Все метки)

Существуют ли контейнеры, которые позволяют хранить N элементов за memory<O(N)? Именно на ходу. Скорость не так важна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2013, 14:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кодирующие контейнеры? (C++):

Контейнеры - C++
Здравствуйте. Помогите написать программу на С, с этим языком не знаком почти, а контейнеры вообще не понимаю. В общем беда полная.... ...

контейнеры С++ - C++
Задача:заполнить массив четными числами ,а множество – нечетными,с пом. алгоритма merge()объединить эти контейнеры в вектор… Но если ...

Контейнеры с++ - C++
Ребят,подскажите пожалуйста,какую функцию нужно использовать,чтобы проверить массив на упорядоченность(мне нельзя использовать циклы и...

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

Шаблоны и контейнеры - C++
Подскажите, пожалуйста, отличия между шаблоном и контейнером (кроме наличия итератора).

Ассоциативные контейнеры - C++
В текстовом файле хранятся слова: - вывести список различных слов (set); - подсчитать количество вхождений каждого слова...

17
0x10
2479 / 1654 / 248
Регистрация: 24.11.2012
Сообщений: 4,099
07.07.2013, 14:09 #2
nexen, QVector, например, реализует copy-on-write. Т.е. если создаешь копию вектора, то копируется только указатель до тех пор, пока не понадобится изменять значения элементов одного из векторов.

Upd: пардон, не так понял тему, перечитал название - дошло.
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.07.2013, 14:27 #3
std::vector<bool>
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
07.07.2013, 14:29 #4
Цитата Сообщение от DU Посмотреть сообщение
std::vector<bool>
и как оно отражается на
Цитата Сообщение от nexen Посмотреть сообщение
хранить N элементов за memory<O(N)?
???
1
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.07.2013, 14:33 #5
Нужен сжимающий контейнер с нелинейным ростом размера архива от количества заархивированной инфы, монотонным ростом коэффициента сжатия от размера и возможностью добавлять инфу без полной распаковки того, что уже есть и последующей запаковки не сжатого контейнера?
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
07.07.2013, 14:41  [ТС] #6
taras atavin, как уже сказал, скорость не так важна, но было бы не плохо, если бы можно было выбирать между контейнерами, что могу и с распакованной и с не распакованной инфой работать.
Да, с нелинеймным ростом архива, а вот коэффициент сжатия.. недопонял вас. Если имели ввиду, что при 100 байтах ушло 5 байт, а при 1000 уже 100 байт, а не 50, то это не важно. Главное, чтобы он сжимал и, желательно, хорошо сжимал на объемах 100мбайт+.
Если есть такие для стандартных типов, то ладно, а если есть и для кастомных - то вообще шикарно!
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.07.2013, 14:47 #7
Ну как где я толкую о скорости?

Добавлено через 1 минуту
Цитата Сообщение от nexen Посмотреть сообщение
Да, с нелинеймным ростом архива, а вот коэффициент сжатия.. недопонял вас.
Коэффициент сжатия есть отношение размера заархивированной инфы к размеру архива. Ладно, напишу проще. Чем больше, тем компактней?

Добавлено через 2 минуты
То есть 100 байт занимают 90, 1000 - 800, 10000 - 7000, а гигабайт вжимается менее, чем сотню мегов? График размера архива от размера заархивированной инфы должен быть выпуклым?
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
07.07.2013, 14:49  [ТС] #8
taras atavin, одно дело - распаковать, найти, запаковать, другое дело - найти. На скорость виляет.
Ну значит я правильно понял про коэффициент, о чем и написал
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.07.2013, 14:55 #9
Цитата Сообщение от nexen Посмотреть сообщение
одно дело - распаковать, найти, запаковать, другое дело - найти. На скорость виляет.
Только на расход памяти, произвольный доступ на запись элемента сразу архива может занимать даже больше времени, чем распаковать всё, добавить и снова запокавать.

Добавлено через 1 минуту
Цитата Сообщение от nexen Посмотреть сообщение
Ну значит я правильно понял про коэффициент, о чем и написал
Нет. 100/5=20, 1000/100=10. 10<20, это уменьшение коэффициента сжатия с ростом размера архива, а не увеличение.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.07.2013, 14:56 #10
А не проще ли взять обычный контейнер нужного типа и реализовать сжатие при добавлении, а распаковку при извлечении?
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.07.2013, 15:01 #11
И что останется от обычного?
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
07.07.2013, 15:04  [ТС] #12
taras atavin, эм, это увеличение коэф. сжатия. Делите в неправильном порядке
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.07.2013, 15:08 #13
В правильном. Размер инфы на размер архива. Если 100 байта храним в 5-ти, то размер инфы 100, а архива 5, если 1000 байт храним в 100-а, то размер инфы 1000, а архива 100. размер инфы делится на размер архива. 100/5=20, 1000/100=10. Вот если 100 байт занимают 5, а 1000 40, то 100/5=20, 1000/40=25, рост.
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
07.07.2013, 15:17  [ТС] #14
taras atavin, эм, что? Вы явно делаете что-то не так, но я вас теперь совсем не понял. Ещё раз, если было 100, а при ахривации ушло (может это слово вы пропустили в прошлый раз?) 5 байт (т.е. стало 95), то коэф. сжатия 5/100 = 5%, а если при 1000 ушло 100, то коэф. сжатия 100/1000 = 10%. Или нет?

update: теперь понял, я дулма про %, как коэффициент сжатия, а вы про "настоящий", так сказать, коэффициент.
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.07.2013, 15:20 #15
Сообщение от DU
std::vector<bool>
и как оно отражается на
Сообщение от nexen
хранить N элементов за memory<O(N)?
???
не знаю как в новом стандарте, но в старом стандарте специально оговорен случай для std::vector<bool>
в нем элементы хранятся запаковано.
0
07.07.2013, 15:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 15:20
Привет! Вот еще темы с ответами:

Строки-контейнеры - C++
Клас-контейнер который является абстракцией текста и состоит из обьектов класа строки и методов добавления строки в текст, удаления строки...

контейнеры (литература) - C++
На сегодняшний момент меня заинтересовали контейнеры) Может кто-то подсказать какую-то литературу по ним? В интернете искал, но ничего...

ООП и контейнеры - C++
Здорова господа! От есть задачка: Напишите класс, производный от Container так, чтобы Vector из параграфа 16.2.1 мог использоваться в...

Контейнеры STL - C++
Кто знает где найти информацию по поводу стандартных контейнеров STL? Интересует не то, как их применять, а основы реализации. Может быть...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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