Compartir tecnología

Serie C-Vector (1)

2024-07-12

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

🌈个人主页:Compañero de clase Yuchen 

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

Introducción y uso de Vector

Introducción a los vectores

Cuando el tipo de parámetro construido por vector es de tipo char, es muy similar a una cadena, pero también existen diferencias entre los dos. Por ejemplo, para el vector.Puede tener en cuenta otros tipos diferentes, mientras que string solo puede ser para cadenas, y después de que aprendamos las cadenas en detalle, nos resultará más fácil aprender otras cosas de STL.

  1. Vector es un contenedor de secuencia que representa una matriz de tamaño variable.
  2. Al igual que una matriz, Vector también utiliza un espacio de almacenamiento continuo para almacenar elementos, lo que significa que se puede acceder a los elementos de Vector mediante subíndices. Es tan eficiente como una matriz, pero a diferencia de una matriz, su tamaño se puede cambiar dinámicamente. su tamaño será manejado automáticamente por el contenedor.
  3. Básicamente, Vector utiliza una matriz asignada dinámicamente para almacenar sus elementos. Cuando se inserta un nuevo elemento, es necesario reasignar el número para aumentar el espacio de almacenamiento. El enfoque es asignar una nueva matriz y luego mover todos los elementos a esta matriz. En términos de tiempo, esta es una tarea relativamente costosa, porque cada vez que se agrega un nuevo elemento al contenedor, Vector no El tamaño no se reasignará. cada vez.
  4. Estrategia de asignación de espacio de Vector: Vector asignará algo de espacio adicional para adaptarse al posible crecimiento porque el espacio de almacenamiento es mayor que el espacio de almacenamiento real requerido. Las diferentes bibliotecas utilizan diferentes estrategias para sopesar el uso y la reasignación del espacio, pero en cualquier caso, la reasignación siempre debe ser. de tamaño de intervalo que aumenta logarítmicamente, de modo que la inserción de un elemento al final se realiza en tiempo constante.
  5. Por lo tanto, Vector ocupa un mayor espacio de almacenamiento para poder gestionar el espacio y hacerlo crecer dinámicamente de manera eficiente.
  6. En comparación con otros contenedores de secuencia dinámica, Vector es más eficiente al acceder a elementos. Agregar y eliminar elementos al final es relativamente eficiente, pero es menos eficiente para otras operaciones de eliminación e inserción que no están al final.

Uso de vectores

función 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. }

De hecho, no hay nada que decir sobre push_back. Agregará caracteres después del espacio de almacenamiento original del Vector.

De hecho, hay una introducción detallada en el archivo. Cuando no hay suficiente espacio durante la inserción, la capacidad se ampliará automáticamente.

En cuanto a los métodos transversales de la función Vector, aquí también hablaremos de varios métodos:

  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;

Incluyendo el acceso al subíndice [], el iterador y el rango, esto es básicamente lo mismo que la cadena de la que hablamos 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. }

 

Lo que es aún más sorprendente de Vector es que se puede reutilizar y aplicar otras cosas en Vector, como Lista, cadena o incluso otro Vector.

Si se aplica una cadena, entonces cada elemento de la tabla de secuencia representa una cadena.