Я нахожу boost:: foreach очень полезным, так как это экономит много письменности. Например, допустим, что я хочу напечатать все элементы в списке:
std::list<int> numbers = { 1, 2, 3, 4 };
for (std::list<int>::iterator i = numbers.begin(); i != numbers.end(); ++i)
cout << *i << " ";
boost:: foreach делает код намного проще:
std::list<int> numbers = { 1, 2, 3, 4 };
BOOST_FOREACH (int i, numbers)
cout << i << " ";
Гораздо лучше! Однако я никогда не понял способ (если это вообще возможно) использовать его для std::map
s. В документации есть только примеры с такими типами, как vector
или string
.