Berbagi teknologi

Seri C-Vektor (1)

2024-07-12

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

🌈个人主页:Teman sekelas Yuchen 

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

Pengenalan dan penggunaan Vektor

Pengantar Vektor

Ketika tipe parameter yang dibangun oleh vektor adalah tipe char, maka sangat mirip dengan string, tetapi ada juga perbedaan di antara keduanya.Itu bisa memperhitungkan tipe lain yang berbeda, sedangkan string hanya bisa untuk string, dan setelah kita mempelajari string secara detail, akan lebih mudah bagi kita untuk mempelajari hal-hal STL lainnya.

  1. Vektor adalah wadah urutan yang mewakili array berukuran variabel.
  2. Sama seperti array, Vector juga menggunakan ruang penyimpanan berkelanjutan untuk menyimpan elemen, yang berarti elemen Vector dapat diakses menggunakan subskrip ukurannya akan otomatis ditangani oleh container.
  3. Pada dasarnya, Vector menggunakan array yang dialokasikan secara dinamis untuk menyimpan elemen-elemennya. Ketika elemen baru dimasukkan, nomor tersebut perlu dialokasikan kembali untuk menambah ruang penyimpanan. Pendekatannya adalah dengan mengalokasikan array baru dan kemudian memindahkan semua elemen ke array ini dari segi waktu, ini adalah tugas yang relatif mahal, karena setiap kali elemen baru ditambahkan ke wadah, Ukuran Vektor tidak akan dialokasikan kembali. setiap saat.
  4. Strategi ruang alokasi vektor: Vektor akan mengalokasikan sejumlah ruang ekstra untuk mengakomodasi kemungkinan pertumbuhan, karena ruang penyimpanan lebih besar dari ruang penyimpanan yang sebenarnya dibutuhkan. Perpustakaan yang berbeda menggunakan strategi yang berbeda untuk mempertimbangkan penggunaan ruang dan realokasi, namun bagaimanapun juga, realokasi Alokasi harus selalu menjadi ukuran interval yang meningkat secara logaritmik, sehingga penyisipan elemen di akhir dilakukan dalam waktu yang konstan.
  5. Oleh karena itu, Vector membutuhkan ruang penyimpanan yang lebih besar untuk mendapatkan kemampuan mengelola ruang dan mengembangkannya secara dinamis dan efisien.
  6. Dibandingkan dengan wadah urutan dinamis lainnya, Vektor lebih efisien saat mengakses elemen. Menambah dan menghapus elemen di akhir relatif efisien, tetapi kurang efisien untuk operasi penghapusan dan penyisipan lain yang tidak ada di akhir.

Penggunaan Vektor

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

Faktanya, tidak ada yang perlu dikatakan tentang push_back. Ini akan menambahkan karakter setelah ruang penyimpanan asli Vector.

Faktanya, ada pengenalan mendetail di dalam file tersebut. Jika tidak ada cukup ruang saat penyisipan, kapasitasnya akan bertambah secara otomatis.

Adapun metode traversal fungsi Vektor, kami juga akan membahas berbagai metode di sini:

  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;

Termasuk akses subskrip [], iterator dan rentang, ini pada dasarnya sama dengan string yang kita bicarakan sebelumnya.

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

 

Yang lebih menakjubkan lagi dari Vector adalah ia dapat digunakan kembali dan menerapkan hal-hal lain ke Vector, seperti List, string, atau bahkan Vector lainnya.

Jika string diterapkan, maka setiap elemen tabel urutan mewakili sebuah String.