Articles of c ++ 11

std :: shared_ptr sicurezza sulla sicurezza spiegato

Sto leggendo http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html e alcuni problemi relativi alla sicurezza dei thread non sono ancora chiari per me: Lo standard garantisce che il conteggio dei riferimenti sia gestito sicuro da thread ed è indipendente dalla piattaforma, giusto? Problema simile: lo standard garantisce che solo un thread (che contiene l’ultimo riferimento) chiamerà delete su un object condiviso, […]

Come posso ordinare due vettori allo stesso modo, con criteri che utilizzano solo uno dei vettori?

Come posso ordinare due vettori allo stesso modo, con criteri che utilizzano solo uno dei vettori? Ad esempio, supponiamo di avere due vettori della stessa dimensione: vector vectorA; vector vectorB; Quindi vectorA usando una funzione di confronto. Quell’ordinamento riordinato vectorA . Come posso applicare lo stesso riordino a vectorB ? Un’opzione è creare una struttura: […]

Usando std :: bind con la funzione membro, usa puntatore object o no per questo argomento?

Quando si utilizza std::bind per associare una funzione membro, il primo argomento è gli oggetti this puntatore. Comunque funziona passando l’object sia come puntatore che no. Vedi ad esempio il seguente programma: #include #include struct foo { void bar(int v) { std::cout << "foo::bar – " << v << '\n'; } }; int main() { […]

Come posso cancellare elementi dai contenitori STL?

Come posso cancellare elementi dai contenitori STL, con un valore specificato o soddisfacendo alcune condizioni ? C’è un unico modo comune o uniforms per farlo per diversi tipi di contenitori?

Come implementare effettivamente la regola del cinque?

AGGIORNA in basso q1: Come implementeresti la regola del cinque per una class che gestisce risorse piuttosto pesanti, ma di cui vuoi che venga valutata in base al valore perché ciò semplifica e abbellisce notevolmente il suo utilizzo? O non sono nemmeno necessari tutti e cinque gli articoli della regola? In pratica, sto iniziando qualcosa […]

Come posso ottenere in modo affidabile l’indirizzo di un object quando l’operatore è sovraccarico?

Considera il seguente programma: struct ghost { // ghosts like to pretend that they don’t exist ghost* operator&() const volatile { return 0; } }; int main() { ghost clyde; ghost* clydes_address = &clyde; // darn; that’s not clyde’s address :'( } Come posso ottenere l’indirizzo di clyde ? Sto cercando una soluzione che funzionerà […]

std :: auto_ptr a std :: unique_ptr

Con il nuovo standard in arrivo (e parti già disponibili in alcuni compilatori), il nuovo tipo std::unique_ptr dovrebbe essere un sostituto di std::auto_ptr . Il loro utilizzo si sovrappone esattamente (quindi posso fare una ricerca / sostituzione globale sul mio codice (non che lo farei, ma se lo facessi)) o dovrei essere a conoscenza di […]

Converti tra string, u16string e u32string

Stavo cercando un modo per convertire tra i tipi di stringa Unicode e ho trovato questo metodo . Non solo non capisco completamente il metodo (non ci sono commenti) ma anche l’articolo implica che in futuro ci saranno metodi migliori. Se questo è il metodo migliore, potresti per favore indicare cosa lo fa funzionare, e […]

Perché copiamo e poi spostiamo?

Ho visto il codice da qualche parte in cui qualcuno ha deciso di copiare un object e successivamente spostarlo in un membro di dati di una class. Questo mi ha lasciato in confusione nel fatto che pensavo che il punto principale del movimento fosse evitare la copia. Ecco l’esempio: struct S { S(std::string str) : […]

Passando i puntatori condivisi come argomenti

Se dichiaro un object racchiuso in un puntatore condiviso: std::shared_ptr myClassObject(new myClass()); quindi volevo passarlo come argomento a un metodo: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr arg1) { arg1->someField = 4; } Quanto sopra semplicemente incrementa il conteggio dei riferimenti di shared_pt e tutto è bello? O lascia un puntatore ciondolante? Dovresti ancora farlo ?: […]