Nano Hash - криптовалюты, майнинг, программирование

Какие хорошие практики программирования изменятся с C++11?

Например, «Не возвращайте объекты по значению, если их копирование дорого» (не всегда можно использовать RVO). Этот совет может измениться из-за ссылок на rvalue.

То же самое можно сказать и о хранении коллекций указателей на объекты, потому что копировать их по значению в коллекцию было слишком дорого; эта причина может быть уже недействительной.

Или использование перечислений может быть обескуражено в пользу «класса перечисления».

Какие другие практики или советы изменятся?

29.05.2010

  • Вопросы с несколькими разными правильными ответами должны быть вики сообщества. 29.05.2010
  • @Jon - я понимаю, что вы новичок, но один из аспектов сайта - принимать ответы на ваши вопросы, чтобы будущие искатели с той же проблемой знали, какой из них решил вашу. Если есть один ответ, который лучше всего отвечает на ваш вопрос, используйте галочку рядом с ответом, чтобы выбрать его в качестве принятого ответа. 29.05.2010
  • @tvanfosson - я принял ответ сейчас. Я обеспокоен тем, что пометка ответов, которые не полностью решили проблему, как принятых, будет препятствовать дальнейшим ответам. В любом случае это мета. 29.05.2010
  • @Jon - полностью понимаю, и я не призываю вас принимать ответы просто для улучшения показателя. Однако, как правило, вы получите достаточно хороший ответ, и вы должны принять его, если он лучший. Вы всегда можете прокомментировать ответ и, возможно, улучшить его. Я просто подумал, что вы можете не знать об этом аспекте сайта, так как вы относительно новичок. 29.05.2010
  • Просто вопрос, он все еще называется C++ 0x? или С++ хх? Так как были в 2010 году сейчас 29.05.2010
  • @Faisal: C++0x — это просто неофициальное имя, и большинство людей, вероятно, будут придерживаться его до тех пор, пока стандарт не будет фактически опубликован, после чего это будет C++11 или C++12, в зависимости от того, когда это на самом деле произойдет. . 29.05.2010

Ответы:


1

Я ожидаю, что C++, написанный в функциональном стиле, станет более распространенным, потому что:

  • Лямбда-выражения значительно упрощают использование алгоритмов стандартной библиотеки.
  • Семантика перемещения значительно удешевляет возврат стандартной библиотеки или других объектов-контейнеров RAII.
29.05.2010
  • Что касается семантики перемещения: или любого класса владельца ресурса. Мы могли бы даже вернуть замки сейчас :) 29.05.2010
  • @Матье: Верно; Я имел в виду контейнер в смысле контейнера RAII, а не в смысле контейнера стандартной библиотеки; Я добавил язык, чтобы уточнить. Спасибо! 29.05.2010
  • Я отмечаю это как лучший ответ; но я подозреваю, что это может быть расширено, поскольку С++ 0x становится более распространенным. 03.06.2010

  • 2

    Улучшена локализация кода за счет использования лямбда-выражений.

    29.05.2010

    3

    Ссылки Rvalue не заменяют RVO или NRVO. Возвращать большие вещи по значению по-прежнему глупо — просто это менее глупо, когда класс на самом деле маленький и содержит кучу памяти. Передача ссылки на возвращаемое значение по-прежнему является лучшей практикой, imo.

    Объекты-функции как необработанные структуры/классы будут объявлены устаревшими в пользу лямбда-выражений.

    Я не могу много думать, если честно. C++0x, похоже, упрощает существующий код, а не изменяет его.

    29.05.2010
  • C++0x, похоже, упрощает существующий код, а не изменяет его. В яблочко. Мастер сказал: «Омоложение исходного кода — это не рефакторинг». 29.05.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..