1 | ||||||
Немного о массивах12.09.2021, 10:35. Показов 2611. Ответов 29
Метки нет (Все метки)
Рассмотрим такой код:
Создал 4 массива разными способами. arr1 будет статическим массивом. Для него на протяжение всей программы выделяется память для 10 элементов, которая больше не меняется. В такой массив мы не можем добавить новые элементы. Такой массив не может возвращаться через функцию. Но arr1 будет самым быстрым из всех массивов. arr2 также является статическим массивом, но создан через контейнер <array>. Фактически тоже самое, что и arr1, только имеет несколько преимуществ: мы можем использовать готовые функции из <array>. arr3 является динамическим массивом, для которого изначально выделяется память для 10 элементов. Динамические массивы могут возвращаться функциями. arr4 тоже является динамическим массивом, но создан через контейнер <vector>, который имеет много преимуществ: более безопасное управление памятью и возможность использования готовых функций из <vector>. Еще я не понимаю один момент. В динамический массив, по идее, мы можем добавлять элементы за пределами выделенного раздела, либо увеличить размер выделенной памяти, а потом добавить новый элемент (как понимаю, в этом и все отличие динамического массива от статического). Вот только, если для arr4 мы можем использовать функции push_back(), pop_back(), reserve(), shrink_to_fit(), size() и т.д., то как мы можем добавить новые элементы в arr3? И как мы можем узнать количество элементов в arr3?
0
|
12.09.2021, 10:35 | |
Ответы с готовыми решениями:
29
В массивах G(8), K(19) определить кол-во и произведение элементов меньших 26 в двух заданных массивах (6;34) В отсортированных массивах найти количество совпадений, т.е. чисел в двух массивах с одинаковым индексом/ В наушник попало немного воды и он стал немного тише играть Как пользоваться квадратными скобками в массивах массивах? Теоретически о массивах и массивах процедур |
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
12.09.2021, 18:08 | 21 |
Это верно. Но я, естественно, имел в виду случай, когда foo - это не constexpr функция выполняющаяся в compile-time контексте (все мы знаем, что сам по себе constexpr не гарантирует этого).
А вот это к делу не относится. Т.к. речь идет о языке, а не о расширениях компилятора. В целом, все достаточно просто: выражение приводит ли к значению времени компиляции, или не приводит. Если не приводит, значит использовать его в качестве размера массива в С++ нельзя. Независимо от того, что именно допускают отдельные компиляторы.
0
|
Вездепух
12793 / 6670 / 1795
Регистрация: 18.10.2014
Сообщений: 16,889
|
||||||
12.09.2021, 18:46 | 22 | |||||
Это потому что вы опять создали тему в форуме по С++, а рассказываете вы нем байки про какие-то туманные полузабытые эксперименты с языком С. С и С++ - разные языки. Если компилятор С не поддерживает VLA, то такой код
Справедливости ради надо заметить, что даже в тех компиляторах С++, которые разрешают массивы неконстантного размера в качестве расширения, получившаяся сущность ведет себя не так, как ведут себя VLA в С. То есть в С++ это никакой не "VLA", в совершенно иной продукт фантазии авторов конкретного компилятора С++, лишь внешне напоминающий VLA. Я пока что не видел ни одного компилятора С++, который бы поддерживал VLA в соответствии с С-шной спецификацией.
1
|
12.09.2021, 21:22 [ТС] | 23 |
Я не писал, что VS Code самое лучшее иде. И вообще, VS Code это не IDE, а текстовый редактор. Да, там есть расширения, которые дает ему частичную функциональность IDE (возможность компиляции, отладки и т.д.), но VS Code это редактор.
А я писал, что тот код не работает в IDE Visual Studio на компиляторе MSVC. Если VS Code это гуано, то Visual Studio это гуано в квадрате, созданное для индусов-генераторов мелкософта. Более того, VS Code очень даже популярен среди программистов (см. статистику в инете), ибо это прога с открытым исходным кодом, а не проприетарное гуано как Visual Studio.
1
|
TheCalligrapher
|
12.09.2021, 21:29
#24
|
0
|
Just Do It!
|
|
13.09.2021, 06:34 | 25 |
любой текстовый редактор после того, как вы в него интегрируете компилятор + тулзы
превращается в иде. В случае с VSC имеем некий конструктор "СДЕЛАЙ САМ". Поэтому уже изначально это гуано, потому что это будет выглядеть как "Я ТУТ СДЕЛАЛ ВСЁ ДЛЯ СЭБА" и если вы аутичный красноглазый брейнфакер с нечёткими приоритетами, то скорее всего вся ваша интеграция не будет интуитивно понятна больше никому, кроме вас самих. Потом, а что там с переносимостью этого "текстового редактора", в случае если вам нужно быстро его развернуть на другом компе, чтобы сделать правку на пару минут? зато стандартно из коробки и без брейнфакерства. пока вы пишите маленькие одно(мало)файловые демки/тесты, то пофиг какое иде, ни, или почти пофиг. даже в перечне нет: Какую IDE Вы предпочитаете и почему? другой вариант это Vim, Geany, ... (бегло пробежал несколько страниц комментов). я сам с ним возился - было интересно, но когда приспичило написать демку, то сразу ушёл на C::B/MSVS
0
|
13.09.2021, 09:08 [ТС] | 26 |
а вы попробуйте настроить VS Code для работы с C# + Unity - вот там уже брейнфакерство...
Добавлено через 10 минут я просто пишу в гугле "Best C++ IDEs in 2021" и смотрю разные перечни. В каких-то перечнях его и вправду нет, но во многих он есть и почти всегда в топе. Добавлено через 3 минуты Даже по статистике JetBrains в топе VS Code, а не их IDE - CLion https://www.jetbrains.com/lp/d... -2021/cpp/ Посмотрите раздел "Which IDE / editor do you use the most for C++ development?"
1
|
Just Do It!
|
||||||
13.09.2021, 09:21 | 27 | |||||
я приплёл это редактор к вопросу, почему у вас не компилится:
остальные предположения также из такого ряда ... обратите внимание, что большие проекты пишут только < 0.0001% всех пишущих, т.е. те кто юзает VC им будет достаточно и дефолтного блокнота - разницу они даже и не заметят...
0
|
13.09.2021, 09:26 [ТС] | 28 |
XLAT, плохо, что у меня сейчас нет установленного Visual Studio, чтобы воспроизвести проблему и понять причину ошибки. В настоящее время я использую VS Code (с расширением С++) вместе с GCC - с ними у меня проблем еще не было.
0
|
13.09.2021, 09:31 [ТС] | 30 |
1
|
13.09.2021, 09:31 | |
13.09.2021, 09:31 | |
Помогаю со студенческими работами здесь
30
Изменить немного совсем немного. each() в массивах. В массивах MI (I O) M2 (8) и M3 (5) Немного о PR последовательности в массивах Записи в массивах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |