Ich arbeite an einem Algorithmus in C++, und ich versuche, die Ausführung zu beschleunigen, indem Sie die cin zu scanf. Aber als ich das tat, fing ich an, SIGSEGV-Fehler zu haben.Programm empfangen Signal SIGSEGV während der Verwendung von scanf
int main(){
int nominal;
int check;
string b;
int x;
int a;
int i = 0;
//cin >> a;
scanf ("%d",&a);
for (int i = 0; i<a; i++){
//cin >> b;
scanf("%s",&b);
std::priority_queue <int> Q;
std::priority_queue < int, std::vector <int>, std::greater <int> > moneyBox;
while (b!="0"){
Der Code funktioniert nicht mehr während der Eingabe der ersten Weile. Irgendwelche Tipps, wie man es beheben kann?
Sie können nicht mit 'scanf ("% s", &b);' Verwenden 'getline()' oder 'cin >> b verwenden' std :: string';. 'Statt –
@ πάνταῥεῖ nicht ganz richtig Er verwenden können '' resize (big_enough) '' und dann '' data() '' member und stellen Sie dann die Größe auf den richtigen Wert später. – BitTickler
Abgesehen von dieser Technik - Sie beschleunigen nichts mit dieser Änderung, hier. Es sei denn, Sie sind ein Lichtgeschwindigkeit Typer, die Zeit, die es dauert, um den Eingang zu schreiben, macht den Zeitunterschied - wenn es für Ihre Änderung zu vernachlässigen ist – BitTickler