Con STL :: vector:limiti Disabilitare il controllo per C++ vettori
vector<int> v(1);
v[0]=1; // No bounds checking
v.at(0)=1; // Bounds checking
C'è un modo per disattivare controllo dei limiti, senza dover riscrivere tutto at()
come []
? Sto usando la libreria GNU Standard C++.
Edit: ho cambiato at()
-[]
nella zona in cui sospettavo un collo di bottiglia, e ha ridotto in modo significativo il tempo di calcolo. Tuttavia, poiché eseguo l'iterazione tra lo sviluppo del codice e l'esecuzione di esperimenti con esso, vorrei abilitare il controllo dei limiti durante lo sviluppo e disabilitarlo quando eseguo gli esperimenti per davvero. Immagino che il consiglio di Andrew sia la soluzione migliore.
A che scopo? Potrebbe esserci un modo migliore. –
Dovresti essere in grado di usare un'espressione regolare per sostituire 'at()' con '[]' e impostare un punto di interruzione per verificare che tutte le istanze siano state sostituite. Non che scivolare attraverso sarebbe un disastro, la preoccupazione è solo la prestazione, giusto? – Potatoswatter
Perché dovresti farlo? Se la tua risposta è la performance, per favore dimmi che hai profilato e hai scoperto che questo è il collo di bottiglia. Se questo è il caso, allora sì, riscrivi i tuoi at() come '[]'. Altrimenti, lascia che sia. –