Domande taggate «c++»

C ++ è un linguaggio di programmazione generico. È stato originariamente progettato come estensione di C e ha una sintassi simile, ma ora è un linguaggio completamente diverso. Utilizzare questo tag per domande sul codice (da compilare) compilato con un compilatore C ++. Utilizzare un tag specifico della versione per domande relative a una revisione standard specifica [C ++ 11], [C ++ 14], [C ++ 17] o [C ++ 20], ecc.

3
Come verificare correttamente se std :: function è vuoto in C ++ 11?
Mi chiedevo come controllare correttamente se un std::functionè vuoto. Considera questo esempio: class Test { std::function<void(int a)> eventFunc; void registerEvent(std::function<void(int a)> e) { eventFunc = e; } void doSomething() { ... eventFunc(42); } }; Questo codice si compila bene in MSVC ma se chiamo doSomething()senza inizializzare eventFuncil codice ovviamente si …

12
Iterazione del vettore C ++ dalla fine all'inizio
È possibile iterare un vettore dalla fine all'inizio? for (vector<my_class>::iterator i = my_vector.end(); i != my_vector.begin(); /* ?! */ ) { } O è possibile solo con qualcosa del genere: for (int i = my_vector.size() - 1; i >= 0; --i) { }
96 c++  vector  iterator 

12
Tupla C ++ vs Struct
C'è qualche differenza tra l'utilizzo di un std::tuplee un solo dati struct? typedef std::tuple<int, double, bool> foo_t; struct bar_t { int id; double value; bool dirty; } Da quello che ho trovato online, ho scoperto che ci sono due differenze principali: structè più leggibile, mentre tupleha molte funzioni generiche che …
96 c++  struct  tuples 

4
Sostituire '::' con '. "creare ambiguità in C ++?
In C ++, l'operatore :: viene utilizzato per accedere a classi, funzioni e variabili in uno spazio dei nomi o in una classe. Se le specifiche del linguaggio utilizzate .invece che ::in quei casi anche come quando si accede a variabili / metodi di istanza di un oggetto, ciò causerebbe …


6
Perché std :: initializer_list non è un linguaggio integrato?
Perché non è std::initializer_listintegrato un linguaggio di base? Mi sembra che sia una caratteristica abbastanza importante di C ++ 11 e tuttavia non ha una propria parola chiave riservata (o qualcosa di simile). Invece, initializer_listè solo una classe modello dalla libreria standard che ha una speciale mappatura implicita dalla nuova …



3
Cosa significa svuotare il buffer?
Sto imparando il C ++ e ho trovato qualcosa che non riesco a capire: I buffer di output possono essere svuotati esplicitamente per forzare la scrittura del buffer. Per impostazione predefinita, la lettura dei cinflush cout; coutviene anche svuotato quando il programma termina normalmente. Quindi svuotare il buffer (ad esempio …
95 c++  input  buffer  output  flush 

5
Posso inizializzare da elenco un vettore di tipo solo spostamento?
Se passo il codice seguente attraverso la mia istantanea GCC 4.7, prova a copiare i messaggi di posta unique_ptrelettronica nel vettore. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Ovviamente non può funzionare perché std::unique_ptrnon è copiabile: errore: utilizzo …



6
L'operatore tilde in C
Ho visto l'operatore tilde utilizzato nell'algoritmo di hashing ELF e sono curioso di cosa fa. (Il codice proviene da Eternally Confused .) unsigned elf_hash ( void *key, int len ) { unsigned char *p = key; unsigned h = 0, g; int i; for ( i = 0; i < …
95 c++  c  operators 


3
Cos'è un "memory stomp"?
Mi sono appena imbattuto in questo post del blog che menziona "memoria stomping": un programma C ++ che è facilmente in grado di calpestare la memoria (qualcosa di cui probabilmente non hai mai nemmeno sentito parlare se sei nato in un mondo di codice gestito.) E infatti non ne ho …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.