Condivisione della tecnologia

Serie C-Vector (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

🌈个人主页:Compagno di classe Yuchen 

💫个人格言:“成为自己未来的主人~”   

Introduzione e utilizzo di Vector

Introduzione al vettore

Quando il tipo di parametro costruito da vector è di tipo char, è molto simile a string, ma esistono anche differenze tra i due. Ad esempio, per vector,Può prendere in considerazione altri tipi diversi, mentre string può essere solo per stringhe, e dopo aver imparato la stringa in dettaglio, diventerà più facile per noi imparare altre cose STL.

  1. Vector è un contenitore di sequenze che rappresenta un array di dimensioni variabili.
  2. Proprio come un array, anche Vector utilizza uno spazio di archiviazione continuo per memorizzare gli elementi, il che significa che è possibile accedere agli elementi di Vector utilizzando i pedici. È efficiente quanto un array, ma a differenza di un array, la sua dimensione può essere modificata dinamicamente la sua dimensione verrà gestita automaticamente dal contenitore.
  3. In sostanza, Vector utilizza un array allocato dinamicamente per memorizzare i suoi elementi. Quando viene inserito un nuovo elemento, il numero deve essere riallocato per aumentare lo spazio di archiviazione. L'approccio consiste nell'allocare un nuovo array e quindi spostare tutti gli elementi in questo array. In termini di tempo, questo è un compito relativamente costoso, perché ogni volta che un nuovo elemento viene aggiunto al contenitore, Vector non verrà riallocato. ogni volta.
  4. Strategia di allocazione dello spazio di Vector: Vector allocherà spazio aggiuntivo per consentire una possibile crescita perché lo spazio di archiviazione è più grande dello spazio di archiviazione effettivo richiesto. Diverse librerie utilizzano strategie diverse per valutare l'utilizzo dello spazio e la riallocazione, ma in ogni caso le allocazioni dovrebbero sempre essere di dimensione dell'intervallo crescente logaritmicamente, in modo che l'inserimento di un elemento alla fine avvenga in tempo costante.
  5. Pertanto, Vector occupa uno spazio di archiviazione maggiore per acquisire la capacità di gestire lo spazio e di farlo crescere dinamicamente in modo efficiente.
  6. Rispetto ad altri contenitori di sequenze dinamiche, Vector è più efficiente quando si accede agli elementi. L'aggiunta e l'eliminazione di elementi alla fine è relativamente efficiente, ma è meno efficiente per altre operazioni di eliminazione e inserimento che non si svolgono alla fine.

Uso del vettore

funzione push_back

  1. void test_vector1()
  2. {
  3. vector<double> v2;
  4. vector<int> v1;
  5. v1.push_back(1);
  6. v1.push_back(2);
  7. v1.push_back(3);
  8. v1.push_back(4);
  9. for (size_t i = 0; i < v1.size(); i++)
  10. {
  11. cout << v1[i] << " ";
  12. }
  13. cout << endl;
  14. }
  15. int main()
  16. {
  17. test_vector1();
  18. return 0;
  19. }

In effetti, non c'è niente da dire su push_back Aggiungerà caratteri dopo lo spazio di archiviazione originale del Vector.

Infatti nel file è presente un'introduzione dettagliata. Quando non c'è abbastanza spazio durante l'inserimento, la capacità verrà automaticamente espansa.

Per quanto riguarda i metodi di attraversamento della funzione Vector, parleremo anche qui di vari metodi:

  1. for (size_t i = 0; i < v1.size(); i++)
  2. {
  3. cout << v1[i] << " ";
  4. }
  5. cout << endl;
  6. for (size_t i = 0; i < v1.size(); i++)
  7. {
  8. cout << v1[i] << " ";
  9. }
  10. cout << endl;
  11. vector<int>::iterator it1 = v1.begin();
  12. while (it1 != v1.end())
  13. {
  14. cout << *it1 << " ";
  15. it1++;
  16. }
  17. cout << endl;
  18. for (auto e : v1)
  19. {
  20. cout << e << " ";
  21. }
  22. cout << endl;

Incluso l'accesso al pedice [], l'iteratore e l'intervallo per, è sostanzialmente uguale alla stringa di cui abbiamo parlato prima.

  1. void test_vector2()
  2. {
  3. vector<string> v2;
  4. string s1("张三");
  5. v2.push_back(s1);
  6. v2.push_back(string("李四"));
  7. v2.push_back("王五");
  8. v2[1] += "来";
  9. for (const auto& e : v2)
  10. {
  11. cout << e << " ";
  12. }
  13. cout << endl;
  14. }
  15. int main()
  16. {
  17. test_vector2();
  18. return 0;
  19. }

 

La cosa ancora più sorprendente di Vector è che può essere riutilizzato e applicare altre cose in Vector, come List, string o anche un altro Vector.

Se viene applicata la stringa, ogni elemento della tabella di sequenza rappresenta una stringa.