
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.198] |
![]() |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Цитата Qraizer @ У Майерса один из советов был "не знаете, какой контейнер использовать, берите вектор". Aга и получайте out of memory, лучше бы он или другой кто , показал пример как использовать аllocator, Я не хочу на два умножать и тратить память в пустую. Добавлено Цитата applegame @ Он предлагает никогда не использовать связные списки? Совсем что-ли тронулся умом старый? https://www.youtube.com/watch?v=YQs6IC-vgmo Где ты услышал слово никогда? Он говорит почему не стоит юзать, хотя и не говорит почему таки иногда его пользовать таки стоит, ![]() Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" Эта тема была разделена из темы "Новый взгляд на контейнеры" |
![]() |
Сообщ.
#2
,
|
|
settler, не хочешь, не трать. Кто тебя заставляет-то?
Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
Сообщ.
#3
,
|
|
|
Цитата Qraizer @ settler, не хочешь, не трать. Кто тебя заставляет-то? out of memory и заставляет ![]() Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
![]() |
Сообщ.
#4
,
|
|
Цитата settler @ Aга и получайте out of memory list и прочие контейнеры больше памяти жут, чем вектор, очевидно. Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
Сообщ.
#5
,
|
|
|
Цитата OpenGL @ Цитата settler @ Aга и получайте out of memory list и прочие контейнеры больше памяти жут, чем вектор, очевидно. list больше на 8 байт это очевидно, если имеем x байт у вектора , то list - х+8 , при размере n , sizeofVextor - *x*n , list - n(x+8) при добавке елемента sizeofVextor - 2*x*n , list - (n+1)(x+8) при больших n list меньше , если х большой то на 8 можно забить, Если програмист этого не знает, то он ламер. ![]() Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
![]() |
Сообщ.
#6
,
|
|
По-моему то, что ты написал, написать может только ламер
![]() Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
Сообщ.
#7
,
|
|
|
Цитата settler @ list больше на 8 байт это очевидно, если имеем x байт у вектора , то list - х+8 , при размере n , sizeofVextor - *x*n , list - n(x+8) при добавке елемента sizeofVextor - 2*x*n , list - (n+1)(x+8) при больших n list меньше , если х большой то на 8 можно забить, Если програмист этого не знает, то он ламер. ![]() Боже, какой бред! ![]() На, проверяй: ![]() ![]() #include <stdio.h> #include <memory> #include <vector> #include <list> namespace mmap_allocator_namespace { template <typename T> class mmap_allocator: public std::allocator <T> { public: typedef size_t size_type; typedef T * pointer; typedef const T * const_pointer; template <typename _Tp1> struct rebind { typedef mmap_allocator <_Tp1> other; }; pointer allocate(size_type n, const void * hint = 0) { fprintf(stdout, "Alloc %d bytes.\n", n * sizeof(T)); return std::allocator <T> ::allocate(n, hint); } void deallocate(pointer p, size_type n) { fprintf(stdout, "Dealloc %d bytes (%p).\n", n * sizeof(T), p); return std::allocator <T> ::deallocate(p, n); } mmap_allocator() throw (): std::allocator <T> () { fprintf(stdout, "Hello allocator!\n"); } mmap_allocator(const mmap_allocator & a) throw (): std::allocator <T> (a) {} template <class U> mmap_allocator(const mmap_allocator <U> & a) throw (): std::allocator <T> (a) {}~mmap_allocator() throw () {} }; } using namespace std; using namespace mmap_allocator_namespace; int main() { // раскомментируем нужное: // vector<int, mmap_allocator<int>> int_vec(32, 0, mmap_allocator<int>()); // list<int, mmap_allocator<int>> int_lst(32, 0, mmap_allocator<int>()); return 0; } Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
![]() |
Сообщ.
#8
,
|
|
Цитата settler @ Дай ссылку, где бы чётко показывалось, что не (n+1)*x при добавке елемента sizeofVextor - 2*x*n , list - (n+1)(x+8) Добавлено Цитата settler @ А. Понятно. Не читатель.out of memory и заставляет Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
Сообщ.
#9
,
|
|
|
Цитата Qraizer @ Дай ссылку, где бы чётко показывалось, что не (n+1)*x man 3 realloc, или сорцы вектора, или , там есть умножение на два, чтобы выделить блок памяти когда size=upperLimit, нормальные люди перегружают исходя их конкретной задачи, Да ты все это знаешь, только дурку косишь ![]() Добавлено Ну проверил, алокаторы работают по разному, у вектора есть внутренние attributes, под которые память тоже выделаеться, проверь сам ![]() ![]() vector<int> v; cout<< sizeof(v) ; vector<int> l; cout<< sizeof(l) ; Если увидишь разницу то расскажешь ![]() Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
![]() |
Сообщ.
#10
,
|
|
Знаю. Только я ещё кое-что знаю, потому что документацию читал.
Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
Сообщ.
#11
,
|
|
|
Цитата OpenGL @ Вероятно, bad_alloc может у вектора случиться раньше, чем у list-а, но это будет из-за невозможности найти непрерывный кусок памяти нужного размера, а вовсе не из-за того, что он больше занимает памяти. Не Вероятно, bad_alloc может у вектора случиться раньше , а случиться на 100%, Вероятность bad_alloc листа равна 0.00000001 ; Причину ты указал, расчеты мои ты не понял потому что я сравнивал с массивом, а sizeof(vector) eq sizeof(list), и применяемы они для разных целей, The second one is not instead of the first, it's in additional. Как это на-русский перевезти? Добавлено Цитата Qraizer @ Знаю. Только я ещё кое-что знаю, потому что документацию читал. Скорее книгу по Data Structures, или OS, лет так 15-20назад ![]() Это общие базовые/фундаментальные вещи не зависимые от ЯП, А алокатор как я уже понял совсем для других целей придуман. Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
Сообщ.
#12
,
|
|
|
Цитата settler @ у вектора есть внутренние attributes, А у списка нет? Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
Сообщ.
#13
,
|
|
|
Цитата JoeUser @ Цитата settler @ у вектора есть внутренние attributes, А у списка нет? А зачем они ему? Хотя проверь а тo мало ли ![]() Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
Сообщ.
#14
,
|
|
|
Цитата settler @ проверь сам M settler, давай доказательства своих расчетов в студию! Пиши код, показывай суммарные аллокации памяти (включая твои пресловутые attributes), у вектора и листа. Если этого не будет, я посчитаю твой пост от начала и до конца - демагогией и троллингом. Выводы и действия себя ждать не заставят - просто возьми и поверь мне. Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |
![]() |
Сообщ.
#15
,
|
|
Цитата settler @ Не-а. Стандарт языка.Скорее книгу по Data Structures, или OS, лет так 15-20назад Это сообщение было перенесено сюда или объединено из темы "Что несет Бьёрн Страуструп?" |