Pourquoi std::initializer_listun langage de base n'est-il pas intégré? Il me semble que c'est une fonctionnalité assez importante de C ++ 11 et pourtant il n'a pas son propre mot-clé réservé (ou quelque chose de similaire). Au lieu de cela, initializer_listil s'agit simplement d' une classe de modèle de la bibliothèque …
Si je passe le code suivant via mon instantané GCC 4.7, il essaie de copier le unique_ptrs dans le vecteur. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Évidemment, cela ne peut pas fonctionner car il std::unique_ptrn'est pas copiable: …
Dans Bjarne Stroustrup's The C ++ Programming Language 4th edition section 36.3.6 STL-like Operations, le code suivant est utilisé comme exemple de chaînage : void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace( s.find( "even" …
Une version préliminaire de Visual Studio 2012 (la prochaine version après VS2010) est désormais disponible . Quelqu'un sait-il quelles nouvelles fonctionnalités C ++ 11 il prend en charge? (Je ne suis pas en mesure de l'essayer pour le moment).
En C ++ 11, nous avons cette nouvelle syntaxe pour l'initialisation des classes qui nous donne un grand nombre de possibilités pour initialiser des variables. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; …
Je jouais avec les lambdas C ++ et leur conversion implicite en pointeurs de fonction. Mon exemple de départ les utilisait comme rappel pour la fonction ftw. Cela fonctionne comme prévu. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct stat …
J'essaie de calculer la longueur d'une chaîne littérale au moment de la compilation. Pour ce faire, j'utilise le code suivant: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } Tout fonctionne comme …
En C #, il existe un bon sucre de syntaxe pour les champs avec getter et setter. De plus, j'aime les propriétés auto-implémentées qui me permettent d'écrire public Foo foo { get; private set; } En C ++, je dois écrire private: Foo foo; public: Foo getFoo() { return foo; …
Je veux savoir ce que [=]fait? Voici un petit exemple template <typename T> std::function<T (T)> makeConverter(T factor, T offset) { return [=] (T input) -> T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); Comment le code fonctionnerait-il au []lieu de [=]? Je suppose …
Dans le code suivant, le premier appel à fooest ambigu et échoue par conséquent à compiler. Le second, avec l'ajout +avant le lambda, résout la surcharge du pointeur de fonction. #include <functional> void foo(std::function<void()> f) { f(); } void foo(void (*f)()) { f(); } int main () { foo( [](){} …
J'essaie d'utiliser la bibliothèque chrono pour les minuteries et les durées. Je veux pouvoir avoir un Duration frameStart;(depuis le début de l'application) et un Duration frameDelta;(temps entre les images) J'ai besoin de pouvoir obtenir la frameDeltadurée en millisecondes et en flottant secondes. Comment faites-vous cela avec les nouvelles <chrono>bibliothèques c …
Quelle est la meilleure méthode pour passer un shared_ptrd'un type dérivé à une fonction qui prend un shared_ptrd'un type de base? Je passe généralement shared_ptrs par référence pour éviter une copie inutile: int foo(const shared_ptr<bar>& ptr); mais cela ne fonctionne pas si j'essaye de faire quelque chose comme int foo(const …
J'ai entendu auto_ptrdire qu'il était obsolète dans C ++ 11. Quelle est la raison pour ça? J'aimerais aussi connaître la différence entre auto_ptret shared_ptr.
J'aimerais avoir des informations sur la façon de penser correctement les fermetures C ++ 11 et std::functionen termes de mise en œuvre et de gestion de la mémoire. Bien que je ne crois pas à l'optimisation prématurée, j'ai l'habitude de considérer attentivement l'impact de mes choix sur les performances lors …
J'ai un std::vectorobjet d'une certaine classe A. La classe n'est pas triviale et a des constructeurs de copie et des constructeurs de déplacement définis. std::vector<A> myvec; Si je remplis le vecteur avec des Aobjets (en utilisant par exemple myvec.push_back(a)), le vecteur augmentera en taille, en utilisant le constructeur de copie …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.