使用BOOST的ForEach和我自己定製的#define宏來遍歷容器之間的區別是什麼?C++ BOOST ForEach vs自定義宏
礦:
#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'擴展名的編譯器上運行。 – 2013-04-23 21:43:52
有一個區別是'BOOST_FOREACH'能夠處理普通數組,即'char a [] = {「Hello,world!」};'。 – 2013-04-23 21:56:56
你不應該依賴'typeof',那不是標準的C++。你應該使用'decltype' – 2013-04-23 22:04:28