Перейти к содержанию
    

С++ лямбды и многомерные Variable Sized Arrays

Можно фигурными скобками выделить каждый блок и тогда в каждом блоке можно заводить переменные с одним именем. Но вообще такое желание в 99% случаев признак желания копипаста, с этим что-то нужно сделать умнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Огромное спасибо всем за интересные советы!

 

Пошел по пути, который предложил AHTOXA (спасибо!!!), оставив вариант с квадратными скобками и добавив круглые - они чем-то напоминают фортран (правда индексы в обратную сторону) - хедер приаттачил.

 

По плюсам есть много вопросов, хочу остаться в концепции "почти С", но с минималистическими надбавками из С++, так как есть стойкая уверенность, что если будет голимый С++, то код превратиться в что-то не поддерживаемое и глючное.

 

Ищу хорошую и понятную книгу по современному желательно 17 стандарту и по возможности по-русски, но именно построенную по концепции - оптимальной скорости работы программ, отсутствие быдлокода и для написания кода, который проживет еще лет 20. Современный-то код-то живет с 1992, правда переписываясь с Фортрана на С и теперь на С++. Гуглил, нашел много чего, по пока ничего не понравилось. Например, хотелось бы увидеть в книге примеры && (rvalue references), структур с последним членом [], инициализации функций с параметрами по умолчанию, встроенной многопоточности, то есть всего того, что позволит сделать код меньше по объему, более читаемым и быстрым и минимально зависимым от внешних библиотек и причуд компилеров. Вдруг кто такую книжку видел, пожалуйста, поделитесь информацией!

 

Спасибо!

mda.h

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Немного поофтопику. Написал тут проектик на С# под винь. Госпади, теперь эти плюсы в страшном сне видеть не хочу. Под MCU - там С достаточно чистого. Вспоминю как я мучался на плюсах, учил ++, потом снова забывал от недостатка практики, потом снова вспоминал. А тут готовую полезную программу на незнакомом до того C#  за день написал. Сколько чего она там кушает и как все можно улучшить  на пару тактов и 27.5 байт озу на православном ++ мне до фени, я за день те деньги получил, что на плюсах месяц ушел б. Да и из 32 Гб озу в машине ни разу не видел чтобы больше 10 было занято.  Но это так, ссорян, наболело про ++ и мышей которые плачут, но жрут свой кактус. А память... выделил - сам и освобождай.. В 21 веке.. когда память ничего не стоит, а труд программера очено даже стоит. Не, ну только драйвера если писать то можно. Но там и ассемблер канает ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, DASM said:

Немного поофтопику. Написал тут проектик на С# под винь.

Полностью солидарен с вами насчёт C#.

Но конкретно в рамках этой темы, возможностей C# автору может и не хватить, если бы он вдруг захотел переписать свою программу на этом языке. Например, максимальное число элементов массива (объекта типа System.Array) ограничено двумя с лишним миллиардами, т.к. в качестве индекса всегда Int32, сколько бы памяти не было в системе. Кроме этого, у System.Array есть ограничение на количество размерностей: 32.

 

За последние несколько лет я пару раз сталкивался с первым ограничением (вылетали соответствующее исключение). Проблему можно обойти, задействовав коллекшнсы List, но будут потери в быстродействии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, DASM сказал:

Немного поофтопику. ... А память... выделил - сам и освобождай.. В 21 веке.. когда память ничего не стоит,

Ну ничего не стоит она ровно до тех пор пока её хватает. А вот выделил-освободил в современных ++ не нужно делать так же как и в других языках, есть raii, есть умные указатели.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, alexunder сказал:

Но конкретно в рамках этой темы, возможностей C# автору может и не хватить

Конкретно в рамках этой темы автору точно не подойдёт C#, потому что ему надо, чтобы его библиотека работала на куче разных платформ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 minutes ago, AHTOXA said:

Конкретно в рамках этой темы автору точно не подойдёт C#, потому что ему надо, чтобы его библиотека работала на куче разных платформ.

Пробежался по теме и не обнаружил требования о "куче разных платформ"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, alexunder сказал:

Пробежался по теме и не обнаружил требования о "куче разных платформ"

Блин. Вставляю одну цитату, а в результирующем сообщении - другая. Испортили форум.

Короче, вот ссылки: раз, два.

Или поищите по теме по слову "зоопарке".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 minutes ago, AHTOXA said:

Или поищите по теме по слову "зоопарке".

Виноват. Ваша правда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пока перепахал первую сотню тысяч строк по образу и подобию, как посоветовал AHTOXA, - огромное спасибо за классную идею!

На производительности в нескольких местах это к сожалению повлияло под GNU. Компилер путается, если иметь 4-хмерные массивы и одновременно мультитредить на OpenMP и не всегда дает идеально хороший результат, как было на классическом С со вложенными функциями, но в остальном - все пошло на ура. Возможно надо переписать со встроенной многопоточностью современного С++ стандарта, но я еще не решился.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...