2016-05-04 9 views

Antwort

3

Der std::vector Bereich Konstruktor speziell says:

(3) Bereich Konstruktor mit so vielen Elementen wie der Bereich einen Behälter Konstruiert [first, liest), wobei jeder in dem aus seinem entsprechenden Elemente ausgebildet Elements Bereich, in der gleichen Reihenfolge. Diese

bedeutet, dass, wenn Ihr UINT16 Vektor u 10 Elemente hat, vwerden 10 Elemente zu. Es kümmert sich nicht um einen möglichen Überlauf. Wenn mit "gültig" meinst du, dass es uint16 Werte magisch in 2 uint8s teilt und sie zu v hinzufügt dann nein, das ist nicht der Fall.

1

Vom Windows.h Header:

typedef unsigned char  UINT8, *PUINT8; 
typedef unsigned short  UINT16, *PUINT16; 

Char und Kurz kann sowohl als Zahlen verwendet werden.

Sie haben beide eine implizite Konvertierung zwischen sich.

Ja, es ist gültig. (Ist es sicher, ist eine andere Frage vollständig)

Allerdings werden vorherige numerische "Grenzen" verloren, da aufgrund der Art der Vektoren diese zugeordnet werden, um den "passenden" Vektor zu passen. Dies kann abhängig vom Wert der UINT16

+1

Ich bin neugierig, warum Sie sagen * (Ist es sicher, ist eine andere Frage völlig) *. Findest du das unsicher? – NathanOliver

+0

Dies ist eher eine allgemeine Antwort, nicht so sehr 100% zutreffen. Da einige Beispiele verkürzt sind, sind sie selten das Original. Wenn Sie Zeiger verwenden, besteht die Möglichkeit, dass sie unsicher sind (aufgrund unterschiedlicher Größen). – DarmaniLink