it-swarm.com.de

c ++ uint, unsigned int, int

Hallo, ich habe ein Programm, das sich viel mit Vektoren und Indizes der Elemente dieser Vektoren beschäftigt, und ich habe mich gefragt:

  1. gibt es einen Unterschied zwischen uint und unsigned int 
  2. es ist besser, einen der oben genannten Typen zu verwenden oder einfach int zu verwenden, da einige Leute sagen, Compiler verarbeitet int-Werte effizienter, aber wenn ich int verwendet habe, muss ich immer nach negativen idxs suchen.
  3. glaubst du, dass Iteratoren besser sind? ist es effizienter als die normale Indizierung vectorx[idx]?

die Software verarbeitet große Datenprozesse und eine gute Leistung ist ein Muss

23
Ismail Marmoush
  1. C++ definiert keinen solchen Typ als uint. Dies muss "Ihr" Typ sein, d. H. Ein Typ, der in Ihrem Code oder einer Drittanbieter-Bibliothek definiert ist. Man kann vermuten, dass es dasselbe ist wie unsigned int. Könnte unsigned long int sein oder etwas anderes. Auf jeden Fall müssen Sie es selbst überprüfen.

  2. Es ist eine Frage des persönlichen Stils. Ich glaube zum Beispiel, dass man vorzeichenlose Typen verwenden muss, um natürlich nicht negative Werte wie Größen oder Mengen darzustellen. Es gibt keinen Unterschied in der Leistung zwischen signierten und nicht signierten Typen, abgesehen von bestimmten Kontexten. Ich würde sagen, dass in den meisten Fällen unsigned Types effizienter gehandhabt werden.

  3. Iteratoren machen Implementierungen generischer, d. H. Sie können den Iterator mit sequenziellem Zugriff verwenden und somit Ihre Implementierung auf jede sequentielle Datenstruktur anwenden. Durch die Verwendung des Index erlegen Sie der Datenstruktur die Random-Access-Anforderung, was eine starke Anforderung ist. Es ist keine gute Idee, hohe Anforderungen zu stellen, wenn sie nicht wirklich benötigt werden.

34
AnT

Wenn Sie den Vektor auf jeden Fall sequenziell durchlaufen, verwenden Sie den Iterator. Unabhängig vom Indextyp gibt es einen mit der Indizierung verbundenen Aufwand, der durch Iteration vermieden werden kann.

3
TreDubZedd

1) uint = unsigned int, tatsächlich ist uint nur ein typedef für unsigned int (wird beim Kompilieren durch unsigned int ersetzt).

2) Wenn Sie Ihrem Code einige "Sicherheit" hinzufügen wollen, vermeiden Sie mit Sicherheit negative Werte.

3) Wenn Sie den Vektor nacheinander durchlaufen, gehen Sie zu Iteratoren. Sie sind für sequentielle Schleifen optimiert (sie sind eine Art Zeiger).

1
Arslan

Wie bereits in einem anderen Poster erwähnt, ist uint wahrscheinlich ein Typedef für unsigned int Wenn Sie Visual Studio verwenden, können Sie dies sehr schnell überprüfen, indem Sie F12 drücken, während sich der Textcursor in uint befindet, um seine Definition anzuzeigen . 

0
HelloDog