Ho sentito che constsignifica thread-safe in C ++ 11 . È vero? Questo significa che constè ora l'equivalente di Java s' synchronized? Stanno esaurendo le parole chiave ?
Ho una classe chiamata Writerche ha una funzione in questo writeVectormodo: void Drawer::writeVector(vector<T> vec, bool index=true) { for (unsigned int i = 0; i < vec.size(); i++) { if (index) { cout << i << "\t"; } cout << vec[i] << "\n"; } } Sto cercando di non avere un …
const auto&sarebbe sufficiente se voglio eseguire operazioni di sola lettura. Tuttavia, mi sono imbattuto in for (auto&& e : v) // v is non-const un paio di volte di recente. Questo mi fa pensare: È possibile che in alcuni casi oscuri ci sia qualche vantaggio in termini di prestazioni nell'utilizzo …
Stavo solo scrivendo una fabbrica di oggetti generica e utilizzando la meta-libreria del preprocessore boost per creare un modello variadico (utilizzando il 2010 e non li supporta). La mia funzione utilizza riferimenti rval e std::forwardper eseguire un inoltro perfetto e mi ha fatto pensare ... quando uscirà C ++ 0X …
Ho appena perso tre giorni della mia vita rintracciando uno strano bug in cui unordered_map :: insert () distrugge la variabile che inserisci. Questo comportamento altamente non ovvio si verifica solo in compilatori molto recenti: ho scoperto che clang 3.2-3.4 e GCC 4.8 sono gli unici compilatori a dimostrare questa …
C ++ 11 offre diversi modi per eseguire l'iterazione sui contenitori. Per esempio: Loop basato su intervallo for(auto c : container) fun(c) std :: for_each for_each(container.begin(),container.end(),fun) Tuttavia, qual è il modo consigliato per iterare su due (o più) contenitori della stessa dimensione per ottenere qualcosa come: for(unsigned i = 0; …
Ho un codice che è più o meno così: #include <bitset> enum Flags { A = 1, B = 2, C = 3, D = 5, E = 8, F = 13, G = 21, H, I, J, K, L, M, N, O }; void apply_known_mask(std::bitset<64> &bits) { const Flags …
In C ++ 11 possiamo scrivere questo codice: struct Cat { Cat(){} }; const Cat cat; std::move(cat); //this is valid in C++11 quando chiamo std::move, significa che voglio spostare l'oggetto, cioè cambierò l'oggetto. Spostare un constoggetto è irragionevole, quindi perché std::movenon limitare questo comportamento? Sarà una trappola in futuro, giusto? …
In generale presumo che i flussi non siano sincronizzati, spetta all'utente eseguire il blocco appropriato. Tuttavia, cose come coutottenere un trattamento speciale nella libreria standard? Cioè, se più thread stanno scrivendo, coutpossono danneggiare l' coutoggetto? Capisco che anche se sincronizzato avresti comunque un output interlacciato casualmente, ma è quell'interlacciamento garantito. …
Come posso iterare su una tupla (usando C ++ 11)? Ho provato quanto segue: for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); ma questo non funziona: Errore 1: mi dispiace, non implementato: impossibile espandere "Listener ..." in un elenco di argomenti di lunghezza fissa. Errore 2: non posso apparire in un'espressione costante. Quindi, …
Mi sembra di vedere molte risposte in cui qualcuno suggerisce di utilizzare <random>per generare numeri casuali, di solito insieme a codice come questo: std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(0, 5); dis(gen); Di solito questo sostituisce una sorta di "abominio empio" come: srand(time(NULL)); rand()%6; Potremmo criticare il vecchio modo sostenendo che …
C'è un modo per convertire un enum classcampo nel tipo sottostante? Ho pensato che sarebbe stato automatico, ma a quanto pare no. enum class my_fields : unsigned { field = 1 }; unsigned a = my_fields::field; Tale incarico è stato rifiutato da GCC. error: cannot convert 'my_fields' to 'unsigned int' …
Con quasi tutto il codice che scrivo, spesso ho a che fare con problemi di riduzione dei set su raccolte che alla fine si ritrovano con ingenue condizioni "se" al loro interno. Ecco un semplice esempio: for(int i=0; i<myCollection.size(); i++) { if (myCollection[i] == SOMETHING) { DoStuff(); } } Con …
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.