|
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 39
|
||||||
Что будет если добавить элемент в кольцевой буфер n+1 больший, чем размер буфера?27.05.2020, 05:47. Показов 8446. Ответов 77
Что будет если добавить элемент в кольцевой буфер n+1 больший, чем размер буфера?
Кольцевой буфер емкостью 1024 вещественных числа. Доступ к элементам буфера – как к элементам очереди. Обязательны функции-члены класса для инициализации буфера, добавления/удаления элемента, определения количества свободного/занятого пространства в буфере.
0
|
||||||
| 27.05.2020, 05:47 | |
|
Ответы с готовыми решениями:
77
Почему GetTokenInformation возвращает буфер больший, чем затребованная структура?
Что будет иметь больший вес для ПС |
|
|
||||
| 06.05.2021, 16:48 | ||||
|
Не по теме:
Ringbuffer<int, 16> маска у него другая. другая значит что маска у каждого своя. значит не общая. а статик нам говорит что она должна быть общая. как объяснить два противополжных значения ?const static int i = 10; (это объявление я так понимаю) не тоже самое что объявление вне класса int Class::i{10}; (это определение я так понимаю) ?https://create.arduino.cc/edit... 6f/preview строчка 65 что означает , ну я имею ввиду после добовления USART() стало компилироваться, но что за процессы скрываются под таким вызовом ? строчка 119 означает что когда мы создадим объект класса USART<> serial то массив serial.rx_buffer[] будет не пустой ? /в 119 строчке идёт запись в массив по прерыванию. ну как минимум так планировалось/
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 06.05.2021, 22:24 | ||
|
Объект вообще не нужен для понимания концепции static. Отталкиваться нужно от типа (в 4й раз уже говорю). Думайте. Вот подставили вы аргументы в свой шаблон - это привело к генерации нового типа. И мгновенно с этим возникла новая static-переменная. Всё, не нужны никакие объекты. Их может вообще не быть. Вы не понимаете что такое шаблон, или что? Не ясно в чем у вас затруднение. Вроде простые слова говорю. Никакой витиеватости нет. Добавлено через 2 минуты
0
|
||
|
129 / 81 / 49
Регистрация: 10.01.2020
Сообщений: 293
|
|
| 06.05.2021, 22:26 | |
|
неплохо
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 06.05.2021, 22:27 | ||
|
А на самом деле ее нет. Ringbuffer<int, 16> и Ringbuffer<int, 32> - это два разных типа. И static-переменные у них будут разные. Все объекты каждого из этих типов получат свою общую static-переменную.Все-таки вы определенно не понимаете что такое шаблон и видимо считаете параметры в угловых скобках каким-то видом инициализации данных в классе.
1
|
||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 06.05.2021, 22:27 | ||
|
А как заходит речь о статических членах шаблонного класса, то набор синтаксисов становится еще шире.
0
|
||
|
|
|||
| 07.05.2021, 11:13 | |||
пока шаблон (или как вы говорите тип) один то все копии класса (ну объекты) будут использовать один(и общий) статик член..i=10 значит можем писать как нам больше нравиться ? или есть случаи когда один из вариантов нельзя использовать?а строчки 65 и 119 объясните пожалуйста ?
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 07.05.2021, 14:02 | |||
USART (про подобный синтаксис вы уже спрашивали тут) вызывается метод buffer_write. Будет создан объект типа USART(1) с инициализацией по умолчанию, время жизни которого длится до конца выражения, у этого объекта вызывается метод buffer_write.__________________ (1) Имя USART внутри шаблонного класса означает тип с подставленными "текущими" параметрами шаблона. Т.е., например, для варианта инстанцирования USART<> (USART<uint8_t, 16>) имя USART внутри шаблонного класса это "псевдоним" для USART<uint8_t, 16>. Для варианта инстанцирования USART<uint8_t, 32> имя USART внутри шаблонного класса это "псевдоним" для USART<uint8_t, 32>.USART<> (USART<uint8_t, 16>).
0
|
|||
|
|
|
| 07.05.2021, 16:48 | |
|
DrOffset, да спасибо понял.. вообщем бесполезные вызовы ... в одном случае потому что временный и вызов этого временного равен нулю, в другом - иззатого что статические .. и кроме статических братьев они ничего не видят... а городить
static T StaticFn(Class& example) чтобы добраться до других нон-статик методов похоже избыточно
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||||
| 07.05.2021, 19:06 | |||||||||
![]() Я же писал выше: USART() приведет к созданию объекта типа USART со значением по умолчанию. Значение по умолчанию для этого типа задается конструктором по умолчанию. В том коде он реализован с помощью метода begin(). Вот и смотрите что делает begin(), чтобы понять что происходит во время USART().На самом деле было бы нагляднее, если бы метод buffer_write был приватным. Это показало бы и возможности доступа и большую целесообразность статической функции в том коде.Кликните здесь для просмотра всего текста
https://rextester.com/YJBCFR93884
0
|
|||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 08.05.2021, 02:08 | ||
|
1. Если инициализатор указан в объявлении static поля, т.е. прямо в классе, то он обычно будет располагаться в заголовочном файле. Для static const полей класса это означает, что их инициализатор будет виден во всех единицах трансляции. И во всех единицах трансляции оптимизатор будет иметь возможность подставлять фактическое значение инициализатора, вместо полноценного обращения к содержимому в памяти. Для целочисленных static const полей это будет означать, что они будут являться integral constant expressions - ради этого для них и было сделано такое исключение в С++98.Если же вы будете указывать инициализатор в определении static поля где-то глубоко в дебрях некоей единицы трансляции, то нигде за пределами этой единицы трансляции это значение на этапе компиляции известно не будет никому.2. Для многих использований константных значений на стадии компиляции определение вообще не требуется. То есть выделения памяти вообще не требуется. Достаточно лишь объявления с инициализатором. А компилятор просто подставит везде где нужно правильное значение. 3. Расположение определения объекта со статическим классом памяти влияет на момент его инициализации в общем порядке инициализации. Вполне может быть, что вам в вашем случае это важно. Значит придется делать отдельное определение и указывать инициализатор именно там.
0
|
||
|
|
|||||||||||||||
| 08.05.2021, 10:34 | |||||||||||||||
|
ааааа если вы про ноль как про чёткое математическое явление... да но наверно не нулю.. ноль я на человеческом языке имел ввиду нет полезного результата который можно использовать"Значение по умолчанию для этого типа задается конструктором по умолчанию." ато есть оно вот прямо с нуля создается.. тогда точно не нужно мне , спасибо. блин сколько тонкостей у каждой запятой, кавычки...
а такой еще вопрос , ни как не могу понять можем мы объъявлять ниже следующие функции как const
0
|
|||||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||||||
| 08.05.2021, 10:37 | ||||||||||
|
Кликните здесь для просмотра всего текста
Добавлено через 1 минуту buffer_count - можем.flush - не можем (она изменяет состояние класса потому что).
0
|
||||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 08.05.2021, 17:39 | ||
|
Нет, мы не "начинаем инициализацию методов (?),переменных" сразу за классом. Описание класса располагается в заголовочном файле, а определения методов и статических переменных располагается в файле реализации, т.е. совсем в другом файле.
0
|
||
|
|
||||||||
| 10.05.2021, 11:17 | ||||||||
|
Кликните здесь для просмотра всего текста
TheCalligrapher, я имел ввиду при написании без заголовочного файла
0
|
||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||
| 10.05.2021, 12:51 | ||||||
Я вам их иллюстрирую.У слова "доступ" вполне четкое значение в рамках С++. Я вам выше специально дал ссылку. Изучайте. Еще у меня сложилось впечатление, что вы постоянно путаете тип(класс) и объект. Когда читаете мои посты, у вас смешивается все в кучу и вы в итоге не понимаете о чем идет речь. Давайте вы сейчас акцентируете на этом внимание и прям перечитаете всю тему сначала. А то без этого похоже разговор продолжать нет смысла, ибо воду в ступе толчем.
1
|
||||||
|
|
|||
| 11.05.2021, 12:17 | |||
нет я понимаю что такое объект. я веду к тому что в основном мы как работаем с классом. делаем объект-экземпляр и работаем. то что вы внутри создали новый-другой объект это ни что иное как временный объект. ведь мы не можем внутри статика создать такойже объект как в main ? я говорю создать а не передать как аргумент. так вот вроде не можем насколько я знаю. и получается что в моих простых задачах такие витиеватые алгоритмы через создание временных объектов избыточны. тем более что результатом от этого временного объекта нельзя воспользоваться в основном объекте. я вообще даже пока и представить не могу что за задача должна быть чтобы нам нужно изменять какието члены только через временный объект внутри статика! понятно что в больших и сложных задачах возможно там сплошь и рядом используются такие методы но мне пока оно как собаке пятая нога.зачем нам проводить реализацию например статичной переменной i в другом файле. что нам мешает сразу в заголовочном её определить внутри описания (как я показывал выше)? почему лвиное большинство предпочитает это делать не в заголовочном , просто потумочто так красиво ? или все просто повторяют как делают большинство ? или другие причины?
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 11.05.2021, 12:49 | |
|
0
|
|
|
|
|||
| 12.05.2021, 09:01 | |||
|
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 12.05.2021, 09:18 | |||||||
|
В вашем посте #54 у вас ДВА разных объекта, и по барабану где они находятся, суть от этого не изменится. Если у вас два разных объекта, то один объект изменения другого никак не увидит, хоть "в статике", хоть "не в статике". Если вам нужно, чтобы объект был создан в static-функции, а продолжил меняться в main, то и делайте это. Например:
Грубо говоря, я вам объяснял характеристики гвоздей, а вы спрашиваете про то как покрыть крышу.
0
|
|||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|||
| 12.05.2021, 09:43 | |||
|
Язык С++ мешает. В языке С++ (до появления inline переменных) вообще не существует способа определить статический член класса "внутри описания". Это невозможно в принципе. Поэтому о каком "как я показывал выше" вы ведете речь мне не ясно. Ничего вы "выше" показывать не могли.
0
|
|||
| 12.05.2021, 09:43 | |
|
Сокет принял данных больше, чем размер буфера Сокет принял данных больше, чем размер буфера
Чем больше размер буфера, тем быстрее программа обрабатывает файл? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|
|
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж»
Уважаемые коллеги!
Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
|
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
|
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|