на стажку в Яндекс или Тинькофф, алгосы подтянул, но с плюсами не понятно. Типо какие темы и тулзы нужно обязательно знать, чтобы уже смело подаваться?
Есть такая тема - C++ - знаешь?
В закрепе многое есть
Не уверен, поэтому спрашиваю, насколько хорошо нужно знать
надо знать хорошо
Никак. Поймешь только когда придешь на собес
Ну давай идиотские вопросы позадаём... У тебя есть массив типа, скажем, T, какого-то размера. Как вставить в середину массива новый элемент T tn ?
Решил прямо тут ему собес провести?
Щас рефнет, смотри
Правильный ответ далеко не на поверхности, кстати
Возьму ответственность на себя ответить нормально Идите на собес. Если задаёте такие вопросы, то Вам ещё учиться и учиться. Мы можем ответить, что нужно знать стл, о таблице виртуальных методов, исключения в деструкторе и все прочее, что написано в интернетах в соответствующих статьях. К сожалению это неправда и только воля случая знает, что от вас захотят. На собесов штук эдак 5 сходите, уже легче будет
На ютубе поищи "c++ собеседование"
Ты никогда не будешь готов. Всегда найдется вопрос, на который ты не будешь знать ответа. На собесе людям важно, как ты думаешь, и умеешь ли вообще это делать ) Иди, пробуй, не получится - пробуй еще.
если места нет, то создать новый массив в два раза больше и переписать с новым элементом, а если есть то вставить и передвинуть остальные?
Главное чтобы позвали хотя бы
А что значит "НЕТ МЕСТА" ?
Ты код давай, а не слова
Не рядом с ноутом, неудобно с телефона
массив имеет фиксированный размер, там не может быть лишнего места
ну зачем ты встреваешь -то...
Подскажи, пожалуйста, вставить в середину массива это подразумевается положить в ячейку памяти, что находится примерно в середине массива какую то информацию (но тогда мы теряем информацию, что там была до этого, если конечно не сохраним ее еще куда нибудь) или же ты подразумеваешь слово вставить, как раздвинуть и вставить между имеющимися? Опять же не совсем понятно используя имеющиеся ячейки массива или допускается увеличивать количество ячеек? Если увеличивать, то насколько я знаю (но могу ошибаться), нельзя просто так взять и добавить ячейку следующую к массиву, так ка не факт, что она свободна, это решает new какую область памяти выделить, получается, если все таки надо раздвинуть, то требуется сначала выделить новую область памяти большего размера, чем имеющийся массив. И только потом туда что то вставлять из старого массива и плюс новое значение. Вот непонятно что означает вставить в твоем вопросе, вставить в имеющиеся ячейки (с потерей данных что были до этого там) или вставить между.
речь о реалокации, конечно
а типа вставить просто через индекс .size() / 2 не прокатит?
вставка подразумевает вставку, помещение нового элемента в любое место контейнера
Возможно речь идет вообще о Си-шных массивах.
В языке С++, само собой.
Это ВСТАВИТЬ новый элемент int v[10] = {0,1,2,3,4,5,6,7,8}; Надо вставить новое число после 5ти
Раздвинуть и вставить
ужас какой...
нука нука .... Давай ка код покажи!
так он думал, что нужно просто зареплейсить, а не заинсертить элемент
Ну про size ещё тоже интересно!
Для этого нужен список. Либо нужно выделить массив нужного размера, а потом двигать все после выставленного дальше.
так для сишного вроде бы надо будет sizof(v)/sizeof(v[0])
Массив какого размера подскажите? Так чтобы прямо вставить можно было Аж интересно
Столько, сколько нужно изначально + 1
Вы его посчитать сможете.
поздравляю 🎉, вы изобрели динамический массив, или же std::vector
Это зависит от того, что ты понимаешь под массивом.
Для меня массив это просто кусок непрерывного адресного пространства. Что можно ещё под ним понимать?
Это мало. У тебе он может с неизменяемым размером или изменяемым. Он может занимать всю доступную память или не всю.
Массив не может быть изменяемым.
Покажете мне на ассемблере как поменять размер объекта на стеке?
На верхушке стека я тебе любой размер (допустимый) задам.
Выделить можно. Как VLA или alloca делают. А изменить как?
Выделить, скопировать и забыть про старый. По раскрутке стека всё свободится. Перевесить указатель.
Ну так это не изменение размера. Это и есть выделение нового, копирование, удаление старого.
А это уже зависит от точки зрения.
Это пересоздание массива
Обсуждают сегодня