Ich werde meine Antwort aus der Perspektive einer wettbewerbsfähigen Programmierung (CP) geben , aber sie gilt auch für andere Bereiche.
Während der Arbeit mit cp sind die Einschränkungen oft recht groß.
Zum Beispiel : Ich hatte eine Frage mit N, M, Q
solchen Variablen , dass 1 ≤ N, M, Q < 10^5
.
Der Fehler , den ich machte , war ich ein 2D - Integer - Array der Größe deklarierte 10000 x 10000
in C++
den und kämpfte SIGABRT
Fehlern bei Codechef für fast 2 Tage.
Nun, wenn wir rechnen:
Typische Größe einer Ganzzahl: 4 Bytes
Anzahl der Zellen in unserem Array: 10000 x 10000
Gesamtgröße (in Bytes): 400000000 Bytes = 4 * 10 ^ 8 ≈ 400 MB
Ihre Lösungen für solche Fragen funktionieren auf Ihrem PC (nicht immer), da er sich diese Größe leisten kann.
Die Ressourcen an Codierungsseiten (Online-Richtern) sind jedoch auf wenige KB beschränkt.
Daher der SIGABRT
Fehler und andere solche Fehler.
Fazit:
In solchen Fragen sollten wir kein Array oder Vektor oder einen anderen DS dieser Größe deklarieren, aber unsere Aufgabe ist es, unseren Algorithmus so effizient zu machen, dass er ohne sie (DS) oder mit weniger Speicher funktioniert.
PS : Es kann andere Gründe für diesen Fehler geben. oben war einer von ihnen.