comment puis-je utiliser pour chaque boucle dans GCC? Et comment puis-je obtenir la version GCC?pour chacun dans GCC et GCC version
(en code)
comment puis-je utiliser pour chaque boucle dans GCC? Et comment puis-je obtenir la version GCC?pour chacun dans GCC et GCC version
(en code)
Utilisez un lambda, par ex. Le range-based for loop est pris en charge par GCC depuis la version 4.6.
// C++0x only
for (auto x : theContainer) {
// do stuff with x.
}
La syntaxe "for each" loop est une extension MSVC. Il n'est pas disponible dans d'autres compilateurs.
// MSVC only
for each (auto x in theContainer) {
// do stuff with x.
}
Mais vous pouvez simplement utiliser Boost.Foreach. Il est portable et disponible sans C++ 0x aussi.
// Requires Boost
BOOST_FOREACH(someType x, theContainer) {
// do stuff with x.
}
Voir How do I test the current version of GCC ? sur la façon d'obtenir la version de GCC.
non, au format C++ 0x. comme VC++ 2010: pour chaque (auto it dans vec) { cout << it << endl; } – user335870
@user: 'pour chaque' n'est pas C++ 0x. – kennytm
Est-ce que 'pour chaque' C++ cli, ou est-ce une extension au C++ brut? –
il y a aussi la manière traditionnelle, n'utilisant pas C++ 0X lambda. L'en-tête <algorithm>
est conçu pour être utilisé avec des objets ayant une parenthèse d'opérateur définie. (C++ 0x lambdas ne sont que des sous-ensemble des objets qui ont l'opérateur())
struct Functor
{
void operator()(MyType& object)
{
// what you want to do on objects
}
}
void Foo(std::vector<MyType>& vector)
{
Functor functor;
std::for_each(vector.begin(), vector.end(), functor);
}
voir algorithm header reference pour obtenir une liste de tous les C++ fonctions standard qui fonctionnent avec functors et lambdas.
Je ne vois aucune relation entre les deux questions ... – kennytm
Voulez-vous dire 'g ++' ou 'gcc'? – alternative