Size: a a a

2021 February 26

ID

In Dev in supapro.cxx
Nastya Medveda
Хорошо, тогда как реализована итерация по элементам массива  в последней строке:
  int aNumbers[] = { 0, 1, 2, 3, 4, 5 };  
 for (int aNumber : aNumbers)

если размер масива неизвестен?
Он известен компилятору
источник

CD

Constantine Drozdov in supapro.cxx
Nastya Medveda
Хорошо, тогда как реализована итерация по элементам массива  в последней строке:
  int aNumbers[] = { 0, 1, 2, 3, 4, 5 };  
 for (int aNumber : aNumbers)

если размер масива неизвестен?
Размеры массива известны, в этом случае [] трактуется как "компилятор, посчитай сам" и типом объекта будет int[6]
источник

CD

Constantine Drozdov in supapro.cxx
Nastya Medveda
Хорошо, тогда как реализована итерация по элементам массива  в последней строке:
  int aNumbers[] = { 0, 1, 2, 3, 4, 5 };  
 for (int aNumber : aNumbers)

если размер масива неизвестен?
Такой массив можно передать в функцию, например
int f(int (&x)[6]) //ссылка на массив из 6 элементов
источник

DF

Dollar Føølish in supapro.cxx
Кстати да
источник

DF

Dollar Føølish in supapro.cxx
При передаче по ссылке не происходит гниения
источник

NM

Nastya Medveda in supapro.cxx
Constantine Drozdov
Размеры массива известны, в этом случае [] трактуется как "компилятор, посчитай сам" и типом объекта будет int[6]
Поняла. То есть статический массив формируется на этапе компиляции, а динамический в рантайме и из-за этого и появляется неизвестность размера.
источник

CD

Constantine Drozdov in supapro.cxx
Nastya Medveda
Поняла. То есть статический массив формируется на этапе компиляции, а динамический в рантайме и из-за этого и появляется неизвестность размера.
Понятие "динамический массив" используется для массивов переменного размера, std::vector, и это обычно три указателя :)
источник

CD

Constantine Drozdov in supapro.cxx
Но компилятор может записать в тип только константу времени компиляции, да
источник

NM

Nastya Medveda in supapro.cxx
Constantine Drozdov
Понятие "динамический массив" используется для массивов переменного размера, std::vector, и это обычно три указателя :)
массив созданный оператором new я имею ввиду
источник

CD

Constantine Drozdov in supapro.cxx
Nastya Medveda
массив созданный оператором new я имею ввиду
Выражением new[], операция new это другое. Выражение new[] имеет количество элементов рантайм-параметром, так что записать его в тип не может.
Заметьте, что опять же возможно
auto * p = new std::array<int, 5>{ 1, 2, 3, 4, 5 };
источник

NM

Nastya Medveda in supapro.cxx
Constantine Drozdov
Выражением new[], операция new это другое. Выражение new[] имеет количество элементов рантайм-параметром, так что записать его в тип не может.
Заметьте, что опять же возможно
auto * p = new std::array<int, 5>{ 1, 2, 3, 4, 5 };
Спасибо. Я еще не умею в стандартную библиотеку.
источник

AS

Anatoly Shirokov in supapro.cxx
Nastya Medveda
массив созданный оператором new я имею ввиду
Вы аллоцируете массив (непрерывная область памяти с однотипными элементами) в хипе,  но получаете только указатель на начало.
источник

CD

Constantine Drozdov in supapro.cxx
Nastya Medveda
Спасибо. Я еще не умею в стандартную библиотеку.
template <typename T, std::size_t N>
struct array {
  T data[N];
};

если можете такое прочитать
источник

CD

Constantine Drozdov in supapro.cxx
структура с массивом
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
Вы аллоцируете массив (непрерывная область памяти с однотипными элементами) в хипе,  но получаете только указатель на начало.
Оно могло бы вернуть std::span, эх, Бьорн, Бьорн, не опередил язык на 30 лет :)
источник

CD

Constantine Drozdov in supapro.cxx
Ну или что там, std::unique_span, владеющий (его когда-нибудь напишут)
источник

AS

Anatoly Shirokov in supapro.cxx
Constantine Drozdov
Оно могло бы вернуть std::span, эх, Бьорн, Бьорн, не опередил язык на 30 лет :)
Из дизайна и эволюции: я хотел писать разбор C++ методом рекурсивного спуска, но встретил Ахо и он убедил, что LALR(1) - это круто :)
источник

DP

Denis Paukaev in supapro.cxx
Constantine Drozdov
std::variant велосипедишь :)
Неа, мы не знаем заранее набор классов же
источник

NM

Nastya Medveda in supapro.cxx
Anatoly Shirokov
Вы аллоцируете массив (непрерывная область памяти с однотипными элементами) в хипе,  но получаете только указатель на начало.
Спасибо. Я тут читаю про steak и heap и пишут что: "Stack-memory has less storage space as compared to Heap-memory. "
то есть это физически разная память?
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
Из дизайна и эволюции: я хотел писать разбор C++ методом рекурсивного спуска, но встретил Ахо и он убедил, что LALR(1) - это круто :)
Дааааа, шикарно, там потом говорят, что первая грамматика такого типа для си создана в 92м, да?)
источник