24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
В этой санине, по стандарту языка, нельзя создавать массивы переменного размера На компиляторе в visual studio я не могу высирать теперь массивы с n элементами Худший в мире яп Вы только вдумайтесь в эту шизу слабоумных хуесосов, которые это все придумывали нахуй :) Желаю им всем рака)))
>>255217459 (OP) >В этой санине, по стандарту языка, нельзя создавать массивы переменного размера можно, уже плохо помню, по моему вектор называется библиотека Вообще 90% компиляторов и интерпритаторов написаны на этом "худшем в мире яп", и создание массивов переменного размера это всего лишь иллюзия - при изменении размера массива - создаётся новый массив на основе старого, старый затирается. Если б не "шиза слабоумных хуесосов", 90% софта, которым ты пользуешься не существовала бы.
>>255218139 не можешь в кресты - закатывайся в жабу, если ты совсем слабоумный существует питухон. Всегда есть выбор подстать твоей задаче и твоему уровню интеллекта
>>255217459 (OP) Вызываешь strlen и измеряешь строку Создаешь новый массив и копируешь строку в него Удалаешь старый массив Создаешь новый с таким же именем и размером strlen+n Удаляешь промежуточный
>>255218108 Мимокрокодил, решил душнуть >Вообще 90% компиляторов и интерпритаторов написаны на этом "худшем в мире яп" ты путаешь плюсы с си, никто не пишет подобного софта на языке с ООП.
>>255217459 (OP) Ты ещё бы пожаловался, почему в ассемблере нельзя создавать переменные и массивы по стандарту. Может ты удивишься, может сильно охуеешь, но на физическом уровне у компьютера нет никаких переменных и массивов, физически существуют только ячейки памяти, а код лишь манипулирует этими ячейками. И чем ближе ты в кодинге находишься к физическому уровню, тем более оптимальный код можешь написать и в целом возможностей у тебя больше. Конечно и труда больше потратить нужно, но возможности ведь больше.
>>255217459 (OP) Ясен хуй не можешь, потому что массив на стеке аллоцируется и ты должен заранее знать его размер. Зато намного быстрее чем в куче. А чем тебя вектор не устраивает? Чем вектор хуже массива из питона? Можно и без вектора, просто выделить нужное тебе количество памяти в куче под массив и будет у тебя массив любого размера, заданный в рантайме. Или ты этого еще не умеешь?
>>255217459 (OP) Массивам выделяется память на стадии компиляции. Если тебе нужно "высереть" массив, либо делай new или бери vector? Со стандарта 17 можно поместить его даже в shared_ptr.
>>255217459 (OP) Всякие костыли в стандарте не нужны. Может тебе еще какой-нибудь говнофреймворк чтоб веб странички лепить прямо в язык встроить? Контейнеры есть в STL
>>255219854 Но в стандартной библиотеке есть динамические массивы. Там есть все обычные контейнеры, списки, массивы, хэш-таблицы. Это в чистом C этого нет. Но в плюсах есть все.
>>255217459 (OP) Это игра какаята для бумеров? Нагуглил какойта с++ онлайн, там таблицы сплошные, пиздец, какой же лютый кал они вечно жрут, как в такое вообще можно гамать в 2к21?
>>255217630 Так на дваче одни тупые долбоебы сидят, которым что скажи - то и будут делать, мамкины рабы по сути, это все из-за мамкиного воспитания и гиперопеки. У них по сути интеллект на уровне мартышки, никакого творческого мышления. Им сказали в АйТи вкатываться, вот они и вкатились в программирование, хотя в айти есть куча направлений, но мартышкам это неведомо, они в силу своего стереотипного мышления считают что айти это там где дрочат код до посинения, а потом идут работать макаками на галеры. Так что программистов здесь не так уж им много, в основном обычные ручные обезьянки, от рабочих за станками они отличаются только чуть более высокими зарплатами, потому что это сейчас в тренде, как 60 лет назад было в тренде за станком хуярить.
>>255217459 (OP) В стандарте языка определена стандартная библиотека, где миллион контейнеров на любой случай. С++ действительно устаревший, переусложненный язык блядскими шаблонами (которые генерируют нечитаемые ошибки) вместо нормальных дженериков неопределенной системой сборки, с вагоном обратной совместимости, которая тащит язык назад, и пользоваться им - боль, но в конкретно твоём случае ты просто не разбираешься, и дело не в языке, а в тебе.
>>255217459 (OP) Ты ебанулся? Гугли std::vector, дебил малолетний. Ты ещё не начал изучать язык, а уже делаешь заявления вселенской тупости. Плюсы – это Царь-язык, всём есть вообще всё. Потом тебе откроются всякие std::map и другие структуры данных, которые ты себе сейчас и предоставить не можешь.
>>255222281 Два чаю. В /biz нашел гайд по вкату в гей шлюхи, з/п не меньше, а то и больше, а вкат почти моментальный. Нахуй это погромирование для долбоебов.
А напомните как называется чувство, когда ты замечаешь полнейшую тупизну если читаешь что-то по своей специальности, но не замечаешь этого по другим темам?
> В этой санине, по стандарту языка, нельзя создавать массивы переменного размера Зумеры снова лезут в программирование, не желая что-то изучать... Тебе придётся смириться, что массивов переменного размера не существует и существовать не может
Я когда-то на чистом си ваял на фрилансе инсталлятор, который заебашивал амиго и осталньую нечисть, если не убрал галочки. Лет 6 назад это было, ахаха. Сори, пацаны.
>>255217459 (OP) Ни в каком языке нельзя создать массив переменной длины даун ты войтишный. Массив это непрерывный участок памяти, для алокации необходимо точно знать его размер. Синтаскический сахар и абстракции где за тебя выделяют новые области памяти не учитываем.
Если тебе так нужно иметь переменную длину и скорость доступа и записи массива, то можно выделить чуть больше места. А если тебе надо туда сюда менять список, то тебе нужна ДРУГАЯ СТРУКТУРА ДАННЫХ
>>255225266 Это не массив переменной длины. В крестах и раньше можно было выделить массив длины N. Невозможно в принципе создать массив размер которого можно изменить. Массив должен быть непрерывным. Единственный способ из массива длины 10 сделать 11 это создать новый массив и скопировать в него старый. Теоретически можно написать еба алгоритм который бы пытался выделить следующий блок памяти и расширить массив, но его поведение будет очень нестабильное.
В принципе сама идея динамически менять размер массива это хуевая идея. Это структура данных создана для тех случаев когда заранее известно что нужно N объектов типа Z. Если тебе нужно переменной длины, то у тебя на выбор просто огромное количество вариантов структур данных
>>255225806 ОП имел в виду не массив, которые можно прям менять, а массив, размер которого можно задать переменной. И кстати, фича в C99 называоась variable-length array. Так что терминология тут ни при чём
>>255219543 >int *x; Никогда не понимал как пользоваться этим говном. Вот есть у меня, допустим, адрес инта, я могу к этому адресу прибавить размер инта n раз, но когда я пойму что дальше нихуя нет и дальше уже другой блок памяти? Когда ОС выебет мой процесс? Хуйня какая-то. Или вы там еще для этого отдельную переменную держите? Так а хули тогда всё это говно в структуру не засунуть? Или я только что изобрел этот ваш так называемый вектор?
>>255226002 >ОП имел в виду не массив, которые можно прям менять, а массив, размер которого можно задать переменной Так, блять, его и раньше можно было переменной задать. Прикол в том, что размер массива будет зависеть только от значения переменной в момент создания массива.
>>255217459 (OP) Дароу студент, в компиляторе qt creator можно делать массив с длинной в виде переменной. Но вот скажи честно, с хуя ли ты решил, что зная мизер возможностей языка, можешь говорить какой язык плохой. У него свои задачи и с ними он прекрасно справляется. Ты же, блядь, не говоришь, что болгаркой мыть стекло хуево. Тут тоже самое.
>>255226822 Ну так и не мой. В чем проблема? Тут тоже самое. Чел буквально не знает нихуя, но вместо того, чтобы изучить как работает и для чего нужен инструмен, бежит срать на двачи, потому лабу осилить не может.
>>255226815 >надо тупо знать Т.е. именно держать под это переменную длины, я понял. >и ваще адрисная арифметика идиотская затея В моих основных языках её и нет а как без неё-то навеласипедить себе динамический массив?
>>255217459 (OP) > В этой санине, по стандарту языка, нельзя создавать массивы переменного размера Ты только что динамический массив. А вообще, это называется std::vector<T>. >>255218063 Двачую.
Я в свое время на собесе сам писал реализацию динамического массива на си за 5 минут, а тут на ебанных крестах уже не могут стандартные библиотеки использовать, вы че ахуели суки, это же самое основное, что будет если не будет в языке готовой реализации двусвязного списка, комп зарежешь? дегенераты блять
>>255227498 а с другой стороны этот анон прав, ты, долбаеб, вск равно нормально динамический массив сам не напишешь. Посмотри в stl или qt, но тогда ты заплатишь за все, даже за то что не используешь. Если юзаешь вектор - нет смысла дальше не использовать всякие туплы, мапы, битфилды и тд, потому что компилиться будет все нахуй и сразу
>В этой санине, по стандарту языка, нельзя создавать массивы переменного размера На компиляторе в visual studio я не могу высирать теперь массивы с n элементами
>>255227595 количество элементов в массиве в отдельном поле класса и итерируется, в случае добавления элемента когда выделенная память заполненна - выделяем больше и муваем туда. Это основное. Проблему с тем, чтобы в потоке каком нибудь не считался случайно элемент в момент реалокации памяти - решаем мьютексами. Остальные хуевины типо перегрузки операторов уже не помню, в жизни не пригождалось такой хуйней заниматься, никто тебя с твоим кастомным списком или вектором в прод не пустит
>>255227637 в том, что если тебе нужна максимальная производительность и совместимость - хоть и реализации лучше чем в стандартной библиотеке шаблонов ты не придумаешь, но тащить еë всю за собой это очень жирно
>>255227800 Она уже сто лет как не библиотека шаблонов, а просто стандартная библиотека. А что жирного то тащить её? Она копье весит по современным меркам.
>>255227879 бля стл расшифровывается как стандарт темплэйтс либрари, МНЕ ПОХУЙ ЧТО У ВАС ИЗМЕНИЛОСЬ, Я УЖЕ ДАВНО ПХП МАКАКА И НА СИ ТОЛЬКО РАСШИРЕНИЯ ПИШУ ОТЪЕБИТЕСЬ >>255227816 пикрил
>>255226779 Qt всего лишь библиотека над C++, как та же std. Там есть контейнеры типа векторов и прочие которые изначально были написаны во времена появления урбилатерий, но сейчас, вроде бы, под капотом уже std реализации. Примитивы, в частности массивы, "там" из тех же плюсов на самом деле из C торчат. Вся мощь Qt это тонны синтаксического сахара, сигналы, QML на утюгах и прочая MOC-магия.
Массив не может быть переменной длины, лол, суть масива в том, что это структура данных, где в памяти значения идут подряд, поэтому сначала выделил память на н элементов, а потом моментально получаешь доступ к любому просто по его номеру, а динамичный массив это другая структура данных, в которой, например, элементы связаны и указывают на следующий, тут уже может быть любое число значений, но они перебираться будут по очереди
>>255230666 Зачем ты пиздишь о том, о чем не знаешь? Динамический массив - массив, который переопределяется и копируется в новый при переполнении. То что ты описал с указателями, это список.
>>255231793 Потому что малоком ты выделяешь память под этот масив. Когда оно переполнится и ты запросишь что-то дальше того, чего выделил, то получишь сегфолт. А массив на стеке динамический впринципе невозможен.
>>255231278 Динамический массив это хуебень для долбоебов. У тебя будет постоянно идти алокация больших кусков памяти, а этот процесс очень ресурсоемок для машины. Релокация и расширение массива вместо использования списков, 2к21, войти, итоги
>>255235124 Хуйни не неси, долбаебина. Если тебе нужно будет пройти по каждому элементу, то массив лучший вариант. А если учесть, что он будет постоянно расти, то твой список обмякнет при первой же попытке обхода(а обходить его придется часто, это же не массив). Если ты, долбаебина, не попытался даже изучить какая структура для чего нужна и как реализованы эти структуры в языках, а реализованы они с учетом твоей проблемы алокации, то ты не имеешь права высирать свое мнение в подобных обсуждениях. И нет, я не засираю списки и не боготворю массивы, я лишь говорю, что ты долбаеб, не понимающий для чего нужны структуры данных.
>>255217459 (OP) >нельзя создавать массивы переменного размера Ты дебил, массив по определению не может быть не переменного размера. Потому что массив - это последовательность ячеек в памяти. Поэтому место резервируется заранее. На Питонах и Пыхах вообще нет массивов. На внутреннем уровне это связные списки либо хеш-таблицы. Учит мат часть. Никто те не мешает в плюсах использовать stl, где есть реализация динамических массивов. Но на внутреннем уровне это массивом не является.
>>255240380 На счет питона не знаю, но в плюсах vector это именно массив. У него можно взять указатель на первый элемент и пользоваться как обычным массивом. Там принцип работы такой, что при увеличении размера просто реалоцируется новый участок памяти.
>>255240863 Я про std::vector<T> спрашивал. > Никто те не мешает в плюсах использовать stl, где есть реализация динамических массивов. > Но на внутреннем уровне это массивом не является.
>>255240980 Как я понял, вектор просто пересоздаётся с нуля в свободном месте памяти, когда мы упираемся в то, что следующий элемент чем-то занят уже в памяти. Или что-то подобное. Ну да, это массив получается. Значит я неверно написал.
>The storage of the vector is handled automatically, being expanded and contracted as needed. Vectors usually occupy more space than static arrays, because more memory is allocated to handle future growth. This way a vector does not need to reallocate each time an element is inserted, but only when the additional memory is exhausted. The total amount of allocated memory can be queried using capacity() function. Extra memory can be returned to the system via a call to shrink_to_fit(). (since C++11)
>Reallocations are usually costly operations in terms of performance. The reserve() function can be used to eliminate reallocations if the number of elements is known beforehand.
В gcc можно объявить массив переменной длины int a[n], а в стандарте - нет. При чем на ассемблере можно легко задать на стеке переменное количество ячеек и запомнить адрес в некоторой ячейке. Вопрос - почему в стандарте стоит запрет?
На компиляторе в visual studio я не могу высирать теперь массивы с n элементами
Худший в мире яп
Вы только вдумайтесь в эту шизу слабоумных хуесосов, которые это все придумывали нахуй :)
Желаю им всем рака)))