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
L'operatore di uguaglianza non viene definito per un'implementazione dell'operatore di astronave personalizzata in C ++ 20
Sto riscontrando uno strano comportamento con il nuovo operatore di astronave <=>in C ++ 20. Sto usando Visual Studio 2019 compilatore con /std:c++latest. Questo codice viene compilato correttamente, come previsto: #include <compare> struct X { int Dummy = 0; auto operator<=>(const X&) const = default; // Default implementation }; int …


5
Stringa amichevole del modello numerica in C ++
Nella libreria standard C ++ ci sono funzioni per convertire da stringhe a tipi numerici: stoi stol stoll stoul stoull stof stod stold ma trovo noioso usarli nel codice modello. Perché non ci sono funzioni modello simili a: template<typename T> T sto(...) convertire le stringhe in tipi numerici? Non vedo …

2
Perché "utilizza il sistema;" non considerato cattiva pratica?
Ho un background C ++ e capisco perfettamente e sono d'accordo con le risposte a questa domanda: Perché "usare lo spazio dei nomi std;" considerata cattiva pratica? Quindi sono stupito che, avendo una certa esperienza con C # ora, vedo esattamente l'opposto lì: using Some.Namespace;viene letteralmente usato ovunque. Ogni volta …

2
Algoritmo per trovare una soluzione per A xor X = B + X
Dati i numeri interi A e B, trova il numero intero X in modo che: A, B <2 * 1e18 A xo X = B + X Dubito fortemente che sia possibile risolvere questa equazione usando la matematica. Questo è un problema di codifica che ho riscontrato 3 anni fa …
46 c++  xor 

3
std :: vector (ab) utilizza l'archiviazione automatica
Considera il seguente frammento: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } Ovviamente si bloccherebbe sulla maggior parte delle piattaforme, perché la dimensione dello stack predefinita è generalmente inferiore a 20 MB. Ora considera il seguente codice: #include <array> #include <vector> int main() { using …

3
Come posso ottenere la profondità di uno std :: vector multidimensionale al momento della compilazione?
Ho una funzione che accetta un multidimensionale std::vectore richiede che la profondità (o il numero di dimensioni) sia passata come parametro del modello. Invece di codificare questo valore, vorrei scrivere una constexprfunzione che prenderà std::vectore restituisca la profondità come unsigned integervalore. Per esempio: std::vector<std::vector<std::vector<int>>> v = { { { 0, …

2
Perché operator! = Rimosso in C ++ 20 per molti tipi di librerie standard?
Secondo cppreference , std::type_info::operator!=viene rimosso con C ++ 20, tuttavia, a std::type_info::operator==quanto pare rimane. Qual è il ragionamento dietro? Potrei essere d'accordo sul fatto che il confronto per l'ineguaglianza sia privo di significato, ma poi il confronto per l'uguaglianza sarebbe altrettanto insignificante, no? Allo stesso modo, operator!=di molti altri tipi …



7
Modo idiomatico per distinguere due costruttori zero-arg
Ho una lezione come questa: struct event_counts { uint64_t counts[MAX_COUNTERS]; event_counts() : counts{} {} // more stuff }; Di solito, per impostazione predefinita, voglio inizializzare (zero) l' countsarray come mostrato. In posizioni selezionate identificate dalla profilazione, tuttavia, vorrei sopprimere l'inizializzazione dell'array, perché so che l'array sta per essere sovrascritto, ma …

2
Approcci per il funzionamento di SFINAE in C ++
Sto usando pesantemente la funzione SFINAE in un progetto e non sono sicuro che ci siano differenze tra i seguenti due approcci (diversi dallo stile): #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template <class …
40 c++  sfinae 


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.