Compartilhamento de tecnologia

Série C-Vetor (1)

2024-07-12

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

🌈个人主页:Colega de classe Yuchen 

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

Introdução e uso do vetor

Introdução ao vetor

Quando o tipo de parâmetro construído por vetor é do tipo char, é muito semelhante a string, mas também há diferenças entre os dois. Por exemplo, para vetor,Pode levar em consideração outros tipos diferentes, enquanto string só pode ser para strings, e depois de aprendermos as strings em detalhes, será mais fácil aprender outras coisas do STL.

  1. Vector é um contêiner de sequência que representa uma matriz de tamanho variável.
  2. Assim como um array, o Vector também usa espaço de armazenamento contínuo para armazenar elementos, o que significa que os elementos do Vector podem ser acessados ​​​​usando subscritos. É tão eficiente quanto um array, mas ao contrário de um array, seu tamanho pode ser alterado dinamicamente. seu tamanho será tratado automaticamente pelo contêiner.
  3. Essencialmente, Vector usa um array alocado dinamicamente para armazenar seus elementos. Quando um novo elemento é inserido, o número precisa ser realocado para aumentar o espaço de armazenamento. A abordagem é alocar um novo array e então mover todos os elementos para esse array. Em termos de tempo, esta é uma tarefa relativamente cara, porque cada vez que um novo elemento é adicionado ao contêiner, o tamanho do vetor não será realocado. toda vez.
  4. Estratégia de espaço de alocação de vetor: Vector alocará algum espaço extra para acomodar um possível crescimento porque o espaço de armazenamento é maior do que o espaço de armazenamento real necessário. Bibliotecas diferentes usam estratégias diferentes para avaliar o uso e a realocação do espaço, mas em qualquer caso, as alocações de realocação devem sempre ser. de aumentar logaritmicamente o tamanho do intervalo, de modo que a inserção de um elemento no final seja feita em tempo constante.
  5. Portanto, o Vector ocupa maior espaço de armazenamento para ganhar a capacidade de gerenciar o espaço e aumentá-lo dinamicamente e de maneira eficiente.
  6. Comparado com outros contêineres de sequência dinâmica, o Vector é mais eficiente ao acessar elementos no final, mas é menos eficiente para outras operações de exclusão e inserção que não estão no final.

Uso de vetor

função 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. }

Na verdade, não há nada a dizer sobre push_back. Ele adicionará caracteres após o espaço de armazenamento original do Vector.

Na verdade, há uma introdução detalhada no arquivo. Quando não houver espaço suficiente durante a inserção, a capacidade será automaticamente expandida.

Quanto aos métodos de travessia da função Vector, também falaremos sobre vários métodos aqui:

  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;

Incluindo acesso subscrito [], iterador e intervalo para, isso é basicamente igual à string da qual falamos antes.

  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. }

 

O que é ainda mais surpreendente no Vector é que ele pode ser reutilizado e aplicar outras coisas no Vector, como Lista, string ou até mesmo outro Vetor.

Se string for aplicada, cada elemento da tabela de sequência representa uma String.