2013-10-30 11 views

Antwort

9

Ich denke, von nicht initialisiert, Sie meinen es standardmäßig initialisiert, das heißt, einen leeren Vektor, dann

v.assign(n, 0.0); 

und

v.resize(n, 0.0); 

sowohl die Größe des Vektors zu n ändert und alle Elemente zu 0.0. Beachten Sie, dass sie für nicht leere Vektoren normalerweise nicht identisch sind. resize() setzt nur die neuen Elemente auf 0.0.

13

assign setzt die Größe zu n und alle Elementwerte auf 0,0, während die Größe zu resizen setzt und nur neuen Elementwerte auf 0.0.

Wenn v vorher leer ist, sind sie gleich, aber assign ist wahrscheinlich klarer.

1

Assign bedeutet ersetzen eines Vektors mit neuen Eigenschaften (Größe und Elemente) Reszie bedeutet, alte Daten zu halten und den neuen Vektor mit neuen Elementen zu erweitern, falls die neue Größe größer als die alte ist. Ansonsten verkleinern Sie die Größe und eliminieren Sie das Extra.

Führen Sie den folgenden Code zweimal aus. Eine für die Zuweisung der zweiten zur Größenanpassung (einfach die erste auskommentieren).

#include <iostream> 
#include <vector> 


int main() 
{ 
    std::vector<int> vec1; 


    vec1.assign(7,100);  
// vec1.resize(7, 100); 
    std::cout << "Size: " << vec1.size() << std::endl; 
    for (unsigned int i(0); i < vec1.size(); ++i) 
    { 
     std::cout << vec1[i] << std::endl; 
    } 
    vec1.resize(4,5); 
    // vec1.assign(4,5); 
    std::cout << "\nSize: " << vec1.size() << std::endl; 

    for (unsigned int i(0); i < vec1.size(); ++i) 
    { 
     std::cout << vec1[i] << std::endl; 
    } 

    vec1.resize(10,5); 
    //vec1.assign(10,5); 
    std::cout << "\nSize: " << vec1.size() << std::endl; 

    for (unsigned int i(0); i < vec1.size(); ++i) 
    { 
     std::cout << vec1[i] << std::endl; 
    } 

    std::cin.get(); 
    return 0; 
} 
+0

Warum habe ich einen Downvote? – CroCo

+2

Link-Only-Antworten sind keine guten Antworten. Sie müssen Kontext für Links bereitstellen. Es wird gelöscht, wenn Sie Ihre Antwort nicht verbessern. –

+1

Viel besser. Es ist noch ein bisschen wortreich; die anderen Antworten sind klarer, weil sie kürzer sind. – MSalters