В чем разница между использованием BOOST's ForEach и моим собственным #define макросом для итерации через контейнер?C++ BOOST ForEach vs custom defined Macro
шахта:
#define iterate(i,x) for(typeof(x.begin()) i=x.begin();i!=x.end();++i)
boost:
#include <string>
#include <iostream>
#include <boost/foreach.hpp>
int main()
{
std::string hello("Hello, world!");
BOOST_FOREACH(char ch, hello)
{
std::cout << ch;
}
return 0;
}
Пожалуйста, объясните, какой метод лучше и почему?
Boost, скорее всего, сконфигурировал свой код для работы на компиляторах, у которых нет нестандартного расширения 'typeof'. –
Одно из отличий заключается в том, что 'BOOST_FOREACH' работает с равными массивами, т. Е.' Char a [] = {"Hello, world!"}; '. –
вы не должны полагаться на 'typeof', это не стандартный C++. вы должны использовать 'decltype' –