Я хотел бы предложить, чтобы вы использовали одно статическое поле для хранения 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.
Смотрите на:
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.
Поскольку это - просто макрос, Вы не можете использовать запятые в именах типов, таким образом,
BOOST_FOREACH(pair<int,int> A, mapB){}
не будет работать.
Для других недостатков я консультировался бы с BOOST_FOREACH () документация.
Я представил BOOST_FOREACH
по сравнению с кодированным рукой циклом. BOOST_FOREACH
было приблизительно на 30% медленнее в простом цикле, который увеличил элементы вектора размера 100,000. Так, при кодировании маленького цикла это не будет как быстро. После того как Ваш цикл выполняет в основной обработке, ударах Закона Amdahl и потере из-за BOOST_FOREACH
незначительно.
Смотрите на источник макроса BOOST_FOREACH (в foreach.hpp) - это не то, что я назвал бы "наклоном и средний" :-)