Повышение C++: Какие-либо глюки с BOOST_FOREACH?

Я хотел бы предложить, чтобы вы использовали одно статическое поле для хранения Guid, и если каждому экземпляру Offer1 нужно поле или свойство для идентификатора, чтобы ссылаться на эту статическую Guid, например,

public class Offer1
{
    internal static readonly Guid ID = new Guid(...);

    private Guid _id => ID;
    // or
    private readonly Guid _id = ID;
}
[ 117] Преимущество варианта в том, что не каждый экземпляр нуждается в памяти для Guid. Поскольку Guid является типом значения, с полем каждый экземпляр выделяет память для guid.

22
задан Community 23 May 2017 в 11:47
поделиться

5 ответов

Смотрите на:

  • Статья Conditional Love для понимания объяснения
  • Раздел Pitfalls документации
  • Раздел Portability на всякий случай Вы разрабатываете межплатформенные продукты
  • Страница ошибок для BOOST_FOREACH
10
ответ дан 29 November 2019 в 04:54
поделиться

BOOST_FOREACH - макрос, я не люблю макросы и предпочитаю использовать алгоритмы STL +, лямбда + связывает.

Также C++ 0x будет содержать для цикла подобный на BOOST_FOREACH:

int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
  x *= 2;
}

это - одна дополнительная причина, не используют частично мертвый BOOST_FOREACH.

9
ответ дан 29 November 2019 в 04:54
поделиться

Поскольку это - просто макрос, Вы не можете использовать запятые в именах типов, таким образом,
BOOST_FOREACH(pair<int,int> A, mapB){}
не будет работать.
Для других недостатков я консультировался бы с BOOST_FOREACH () документация.

8
ответ дан 29 November 2019 в 04:54
поделиться

Я представил BOOST_FOREACH по сравнению с кодированным рукой циклом. BOOST_FOREACH было приблизительно на 30% медленнее в простом цикле, который увеличил элементы вектора размера 100,000. Так, при кодировании маленького цикла это не будет как быстро. После того как Ваш цикл выполняет в основной обработке, ударах Закона Amdahl и потере из-за BOOST_FOREACH незначительно.

7
ответ дан 29 November 2019 в 04:54
поделиться

Смотрите на источник макроса BOOST_FOREACH (в foreach.hpp) - это не то, что я назвал бы "наклоном и средний" :-)

4
ответ дан 29 November 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: