Aggiornato, vedi sotto! Ho sentito e letto che C ++ 0x consente a un compilatore di stampare "Hello" per il seguente frammento #include <iostream> int main() { while(1) ; std::cout << "Hello" << std::endl; } Apparentemente ha qualcosa a che fare con i thread e le capacità di ottimizzazione. Mi …
Motivazione: motivo per cui sto considerando che il mio geniale project manager pensa che la spinta sia un'altra dipendenza e che sia orribile perché "dipendi da essa" (ho provato a spiegare la qualità della spinta, poi ho rinunciato dopo qualche tempo :( La ragione più piccola per cui mi piacerebbe …
Supponiamo che io stia iniziando un std::threade quindi detach(), quindi il thread continua l'esecuzione anche se quello std::threadche una volta lo rappresentava, va fuori portata. Supponiamo inoltre che il programma non disponga di un protocollo affidabile per unire il thread separato 1 , quindi il thread disconnesso continua a funzionare …
Ho cercato il codice sorgente di Clang e ho trovato questo frammento: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Perché dovrei voler std::moveun std::shared_ptr? C'è qualche punto che trasferisce la proprietà su una risorsa condivisa? Perché non dovrei fare questo invece? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = …
Suppongo che "i" sia incrementato e che "a" sia assegnato, ma non sono riuscito a capire o trovare la risposta. Inoltre, sembra molto simile al non standard itoache penso sia fonte di confusione.
Considera questo codice C ++ 11: enum class Color : char { red = 0x1, yellow = 0x2 } // ... char *data = ReadFile(); Color color = static_cast<Color>(data[0]); Supponiamo che i dati [0] siano in realtà 100. Qual è il colore impostato secondo lo standard? In particolare, se lo …
Il codice seguente viene compilato con gcc 4.5.1 ma non con VS2010 SP1: #include <iostream> #include <vector> #include <map> #include <utility> #include <set> #include <algorithm> using namespace std; class puzzle { vector<vector<int>> grid; map<int,set<int>> groups; public: int member_function(); }; int puzzle::member_function() { int i; for_each(groups.cbegin(),groups.cend(),[grid,&i](pair<int,set<int>> group){ i++; cout<<i<<endl; }); } …
C ++ 0x sta introducendo unordered_setche è disponibile in booste in molti altri luoghi. Quello che capisco è che unordered_setè una tabella hash con O(1)complessità di ricerca. D'altra parte, setnon è altro che un albero con log(n)complessità di ricerca. Perché mai qualcuno dovrebbe usare setinvece di unordered_set? cioè c'è bisogno …
Qual è la logica dietro la parola chiave "using" in C ++? Viene utilizzato in diverse situazioni e sto cercando di scoprire se tutti hanno qualcosa in comune e c'è un motivo per cui la parola chiave "using" viene utilizzata come tale. using namespace std; // to import namespace in …
Da tutto il materiale che ho usato per imparare il C ++, autoè sempre stato uno strano identificatore della durata della memoria che non ha avuto alcuno scopo. Ma solo di recente ho riscontrato codice che lo utilizzava come nome di tipo in sé e per sé. Per curiosità l'ho …
Sembra che sia autostata aggiunta una caratteristica abbastanza significativa in C ++ 11 che sembra seguire molti dei linguaggi più recenti. Come in un linguaggio come Python, non ho visto alcuna dichiarazione esplicita di variabili (non sono sicuro che sia possibile utilizzare gli standard Python). C'è un inconveniente nell'usare autoper …
Qual è lo scopo della finalparola chiave in C ++ 11 per le funzioni? Capisco che impedisce l'override delle funzioni da parte delle classi derivate, ma se è così, non è sufficiente dichiarare come non virtuali le tue finalfunzioni? C'è un'altra cosa che mi manca qui?
Sono nuovo di C ++ 11. Sto scrivendo la seguente funzione lambda ricorsiva, ma non viene compilata. sum.cpp #include <iostream> #include <functional> auto term = [](int a)->int { return a*a; }; auto next = [](int a)->int { return ++a; }; auto sum = [term,next,&sum](int a, int b)mutable ->int { if(a>b) …
Nel C ++ tradizionale, passare per valore in funzioni e metodi è lento per oggetti di grandi dimensioni e generalmente non viene visto. Invece, i programmatori C ++ tendono a passare i riferimenti in giro, che è più veloce, ma che introduce ogni sorta di domande complicate sulla proprietà e …
Ho avuto la percezione che il tipo di lambda sia un puntatore a funzione. Quando ho eseguito il test seguente, ho scoperto che era sbagliato ( demo ). #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto …
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.