Vektör C++ Örnekle Standart Şablon Kitaplığı (STL)

⚡ Akıllı Özet

Vektör C++ Standart Şablon Kütüphanesinden gelen, öğeler eklendiğinde veya kaldırıldığında otomatik olarak boyutunu değiştiren ve öğeleri bitişik bellekte depolayan dinamik bir dizidir; böylece programcılar yineleyiciler kullanarak bunlara erişebilir ve bunlar arasında gezinebilirler.

  • ???? Dinamik dizi: A C++ Vektör, sabit boyutlu statik bir dizinin aksine, otomatik olarak büyür veya küçülür.
  • 🧩 Başlık ve sözdizimi: Vektör başlığını ekleyin, ardından vektörü tanımlayın. Türü belirtilen öğeleri saklamak için kullanılan ad.
  • 🧭 Yineleyiciler: `begin()`, `end()`, `cbegin()` ve `cend()` fonksiyonları, işaretçiler gibi vektör elemanları arasında hareket eder.
  • Değiştiriciler: push_back(), insert(), pop_back(), erase() ve clear() fonksiyonları vektör içeriğini değiştirir.
  • 📐 Kapasite: size(), capacity(), max_size(), resize() ve empty() fonksiyonları depolama alanını rapor eder veya ayarlar.
  • 🤖 Yapay zeka yardımı: GitHub Copilot ve benzeri yapay zeka asistanları, kısa bir yorumdan vektör işlemlerini oluşturur.

C++ Vektör STL

Nedir C++ Vektör?

A C++ Vektör, kendisini otomatik olarak yeniden boyutlandırabilen dinamik bir dizidir. Yeniden boyutlandırma, vektöre bir öğe eklendikten veya vektörden silindikten sonra gerçekleşir. Depolama, konteyner tarafından otomatik olarak işlenir. Bir vektörün öğeleri bitişik depolamada depolanır. Bu, C++ programcıların yineleyicileri kullanarak vektör elemanlarına erişmesini ve bunları dolaşmasını sağlar.

Bir vektöre yeni veri ekleme işlemi vektörün sonunda yapılır. Bu işlem diferansiyel zaman alır. Bir vektörden eleman çıkarma işlemi sabit zaman alır. Bunun nedeni, vektörün yeniden boyutlandırılmasına gerek olmamasıdır. Vektörün başına eleman ekleme veya çıkarma işlemi doğrusal zaman alır.

Vektörlerle kod yazmadan önce, ne zaman vektörlerin doğru konteyner olduğunu bilmek faydalı olur.

Bir Vektör Ne Zaman Kullanılır?

A C++ vektör aşağıdaki durumlarda kullanılmalıdır:

  • Sürekli olarak değişen veri öğeleriyle uğraşırken.
  • Verinin boyutu başlamadan önce bilinmiyorsa, vektör sizden konteynerin maksimum boyutunu ayarlamanızı gerektirmez.

Vektörler Nasıl Başlatılır? C++

Vektörlerin söz dizimi C++ olduğu:

vector <data-type> name (items)

Yukarıda gösterildiği gibi, vektör anahtar sözcüğüyle başlıyoruz.

  • MKS veri tipi Vektörde saklanacak elemanların veri türüdür.
  • MKS isim Vektörün veya veri elemanlarının adıdır.
  • MKS ürün Vektör verisi için eleman sayısını belirtir. Bu parametre isteğe bağlıdır.

Bir vektör oluşturulduktan sonra, yineleyiciler size vektörün elemanları arasında gezinmek için işaretçi benzeri bir yol sağlar.

yineleyiciler

Yineleyicilerin amacı, bir vektörde depolanan öğelere erişmemize yardımcı olmaktır. Bir işaretçi gibi çalışan bir nesnedir. İşte desteklenen yaygın yineleyiciler: C++ vektörler:

  • vektör::başlangıç(): vektörün ilk elemanına işaret eden bir yineleyici verir.
  • vektör::son(): vektörün sondan önceki öğesine işaret eden bir yineleyici verir.
  • vektör::cbegin(): Bu, vector::begin() ile aynıdır, ancak elemanları değiştirme yeteneğine sahip değildir.
  • vektör::cend(): Bu, vector::end() ile aynıdır ancak vektör elemanlarını değiştiremez.

Aşağıdaki örnek, bir vektörü doldurur ve ardından hem değiştirilebilir hem de sabit yineleyiciler kullanarak bu vektörde gezinir.

Örnek 1

#include <iostream> 
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;

	for (int a = 1; a <= 5; a++)

		nums.push_back(a);

	cout << "Output from begin and end: ";

	for (auto a = nums.begin(); a != nums.end(); ++a)

		cout << *a << " ";

	cout << "\nOutput from cbegin and cend: ";

	for (auto a = nums.cbegin(); a != nums.cend(); ++a)

		cout << *a << " ";

	return 0;
}

Çıktı:

C++ Vektör yineleyiciler Örnek 1 çıktısı

İşte kodun ekran görüntüsü:

C++ Vektör yineleyiciler Örnek 1 kodu

Code Açıklama:

  1. iostream başlık dosyasını kodumuza ekleyin. Konsoldan okumamıza ve konsola yazmamıza olanak tanıyacak.
  2. Vektör başlık dosyasını kodumuza ekleyin. Vektörlerle çalışmamıza izin verecek C++.
  3. Sınıflarını ve işlevlerini çağırmadan kullanabilmek için std ad alanını ekleyin.
  4. Program mantığının eklenmesi gereken main() fonksiyonunu çağırın.
  5. {, main() işlevinin gövdesinin başlangıcını işaret eder.
  6. Bir tam sayı kümesini depolamak için nums adlı bir vektör bildirin.
  7. Vektör üzerinde yineleme yapmamıza yardımcı olacak bir for döngüsü oluşturun. Değişken, vektör elemanları üzerinde, 1. elemandan 5. elemana kadar yineleme yapmamıza yardımcı olacaktır.
  8. Öğeleri arkadan vektör numarasına itin. Her yineleme için bu, a değişkeninin mevcut değerini vektöre 1'den 5'e kadar ekleyecektir.
  9. Konsola bir miktar metin yazdırın.
  10. Başlangıçtan sondaki öğeye kadar vektör sayılarının öğeleri üzerinde yineleme yapmak için bir yineleyici değişkeni a kullanın. Vector::begin() ve Vector::end() yineleyicilerini kullandığımızı unutmayın.
  11. Her yineleme için yineleyici değişkeni a tarafından işaret edilen değerleri konsolda yazdırın.
  12. Konsola bir miktar metin yazdırın. \n, imleci oradan yazdırmak için yeni satıra taşıyan yeni bir satır karakteridir.
  13. Vektör nums'un elemanları üzerinde baştan sona, sondan sonraki elemana kadar yineleme yapmak için bir yineleyici değişkeni kullanın. `vector::cbegin()` ve `vector::cend()` yineleyicilerini kullandığımıza dikkat edin.
  14. Her yineleme için yineleyici değişkeni a tarafından işaret edilen değerleri konsolda yazdırın.
  15. Program başarıyla çalışırsa ana işlev bir değer döndürmelidir.
  16. Main() işlevinin gövdesinin sonu.

Düzenleyiciler

Değiştiriciler belirtilen veri tipinin anlamını değiştirmek için kullanılır. İşte ortak değiştiriciler: C++:

  • vektör::Push_back(): Bu değiştirici, elemanları arkadan iter.
  • vektör::insert(): Belirli bir konumdaki bir vektöre yeni öğeler eklemek için.
  • vektör::pop_back(): Bu değiştirici, vektör öğelerini arkadan kaldırır.
  • vektör::erase(): Belirli bir konumdan bir dizi öğeyi kaldırmak için kullanılır.
  • vektör::clear(): Tüm vektör öğelerini kaldırır.

Bir sonraki örnekte, bir vektörün nasıl değiştiğini görmek için bu değiştiriciler sırayla uygulanacaktır.

Örnek 2

#include <iostream>
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;
	
	nums.assign(5, 1);

	cout << "Vector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.push_back(2);
	int n = nums.size();
	cout << "\nLast element: " << nums[n - 1];

	nums.pop_back();

	cout << "\nVector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.insert(nums.begin(), 7);

	cout << "\nFirst element: " << nums[0];
	
	nums.clear();
	cout << "\nSize after clear(): " << nums.size();			
}

Çıktı:

C++ Vektör değiştiriciler Örnek 2 çıktısı

İşte kodun ekran görüntüsü:

C++ Vektör değiştiriciler Örnek 2 kodu

Code Açıklama:

  1. İşlevlerini kullanmak için iostream başlık dosyasını kodumuza ekleyin.
  2. İşlevlerini kullanmak için vektör başlık dosyasını kodumuza ekleyin.
  3. Sınıflarını çağırmadan kullanmak için std ad alanını ekleyin.
  4. main() fonksiyonunu çağırın. Program mantığı kendi bünyesine eklenmelidir.
  5. main() fonksiyonunun gövdesinin başlangıcı.
  6. Bazı tamsayı değerlerini saklamak için nums adında bir vektör bildirin.
  7. 5 elementi vektör numaralarında saklayın. Her biri 1 değerine sahiptir.
  8. Konsola bir miktar metin yazdırın.
  9. Vektör sayılarının öğeleri üzerinde yineleme yapmak için bir yineleyici değişken a kullanın.
  10. Her yineleme için vektör sayılarının değerlerini konsola yazdırın.
  11. Vektör sayılarının sonuna 2 değerini ekleyin.
  12. Vektör sayılarının boyutunu depolamak için bir n tamsayı değişkeni bildirin.
  13. Vektör numaralarının son değerini diğer metnin yanında yazdırın. 2 değerini döndürmesi gerekir.
  14. Vektör numaralarından son öğeyi kaldırın. 2'si kaldırılacak.
  15. Konsoldaki metni yazdırın. \n, metni orada yazdırmak için imleci yeni satıra taşır.
  16. Vektör sayılarının öğeleri üzerinde yineleme yapmak için bir yineleyici değişken a kullanın.
  17. Her yineleme için vektör sayılarının değerlerini konsola yazdırın.
  18. 7 değerini vektör sayılarının başına ekleyin.
  19. Vektör numaralarının ilk değerini diğer metnin yanında yazdırın. 7'ye dönmelidir.
  20. Vektör numaralarından tüm öğeleri silin.
  21. Tüm içeriği temizledikten sonra vektör numarasının boyutunu diğer metnin yanında yazdırın. 0 döndürmelidir.
  22. Main() işlevinin gövdesinin sonu.

Kapasite

Aşağıdakileri kullanın fonksiyonlar Bir vektörün kapasitesini belirlemek için:

  • Boyut() – Vektördeki öğe sayısını döndürür.
  • Maksimum_boyut() – Bir vektörün saklayabileceği en yüksek öğe sayısını döndürür.
  • Kapasite() – Bu fonksiyon, bir vektöre ayrılan depolama alanının miktarını döndürür.
  • Yeniden boyutlandır() – Bu komut, kapsayıcıyı n öğe içerecek şekilde yeniden boyutlandırır. Vektörün mevcut boyutu n'den büyükse, vektörün sonundaki öğeler kaldırılır. Vektörün mevcut boyutu n'den küçükse, vektörün sonuna fazladan öğeler eklenir.
  • Boş() – Vektör boşsa true, boş değilse false döndürür.

Bu son örnek, yukarıdaki kapasite fonksiyonlarını kullanarak bir vektörün depolama alanını raporlar ve ayarlar.

Örnek 3

#include <iostream> 
#include <vector> 
using namespace std;
int main() {
	vector<int> vector1;
	for (int x = 1; x <= 10; x++)
		vector1.push_back(x);
	cout << "Vector size: " << vector1.size()<< endl;
	cout << "Vector capacity: " << vector1.capacity() << endl;
	cout << "Maximum size of vector: " << vector1.max_size()<< endl;
	vector1.resize(5);
	cout << "Vector size after resizing: " << vector1.size() << endl;
	if (vector1.empty() == false)
		cout << "Vector is not empty"<<endl;
	else
		cout << "Vector is empty"<<endl;
	return 0;
}

Çıktı:

C++ vektör kapasitesi Örnek 3 çıktısı

İşte kodun ekran görüntüsü:

C++ vektör kapasitesi Örnek 3 kodu

Code Açıklama:

  1. İşlevini kullanmak için iostream başlık dosyasını kodumuza ekleyin.
  2. İşlevlerini kullanmak için vektör başlık dosyasını kodumuza ekleyin.
  3. Sınıflarını çağırmadan kullanmak için std ad alanını kodumuza ekleyin.
  4. main() fonksiyonunu çağırın. Program mantığı bu fonksiyonun gövdesine eklenmelidir.
  5. Tam sayıları depolamak için vektör1 adlı bir vektör oluşturun.
  6. 1'den 10'a kadar değerlere sahip x değişkeni oluşturmak için for döngüsünü kullanın.
  7. X değişkeninin değerlerini vektöre aktarın.
  8. Vektörün boyutunu konsoldaki diğer metnin yanında yazdırın.
  9. Vektörün kapasitesini konsoldaki diğer metinlerin yanında yazdırın.
  10. Konsoldaki diğer metinlerin yanında vektörün tutabileceği maksimum öğe sayısını yazdırın.
  11. Vektörü yalnızca 5 öğeyi tutacak şekilde yeniden boyutlandırın.
  12. Vektörün yeni boyutunu diğer metnin yanına yazdırın.
  13. Vektörün boş olup olmadığını kontrol edin.
  14. Vektör boş değilse metni konsola yazdırın.
  15. Vektör boşsa ne yapılacağını belirtmek için else ifadesini kullanın.
  16. Vektör boşsa konsolda yazdırılacak metin.
  17. Program başarılı bir şekilde tamamlandıktan sonra değeri döndürmelidir.
  18. main() işlev gövdesinin sonu.

SSS

Vektör, otomatik olarak boyutunu değiştiren ve kendi boyutunu bilen dinamik bir dizidir; oysa yerleşik bir dizinin uzunluğu derleme zamanında sabitlenmiştir. Vektörler sizin için belleği yönetir; ham diziler ise yönetmez.

Hızlı ve doğrudan erişim için nums[0] gibi alt indis operatörünü kullanın. nums.at(0) gibi at() üye fonksiyonu da aynı işlevi görür ancak dizin geçersiz olduğunda out_of_range istisnası fırlatarak daha güvenli hale getirir.

Elemanları kendileri de vektör olan bir vektör tanımlayın, örneğin vektör > Izgara. Yapıcılar veya push_back satırları ile boyutlandırabilirsiniz. Her iç vektör bağımsız olarak büyüyebilir, bu da size esnek, yeniden boyutlandırılabilir bir matris sağlar.

Vektör, elemanları hızlı rastgele erişimle bitişik bellekte saklarken, std::list ise herhangi bir yerden hızlı ekleme veya silme imkanı sunan ancak doğrudan indeksleme özelliği olmayan çift yönlü bağlantılı bir listedir. Erişim modelinize göre seçim yapın.

Algoritma başlığını ekleyin ve std::sort fonksiyonunu begin ve end yineleyicileriyle çağırın, örneğin sort(nums.begin(), nums.end()). Sıralama varsayılan olarak artan sıradadır; özel bir karşılaştırıcı veya daha büyük bir sayı geçirin. () azalan sırada sıralamak için.

Evet. Vektör bir şablondur ve dize, özel sınıflar ve hatta diğer vektörler de dahil olmak üzere her türlü türü içerebilir. Eleman türünü açılı parantezlerin içine şu şekilde belirtin: vektör. veya vektör .

Evet. Yapay zekâ kodlama asistanları, kısa bir komut veya yorumu, bildirim, push_back döngüleri ve yineleme dahil olmak üzere çalışan vektör koduna dönüştürür. Yapay zekâ proje özelindeki gereksinimleri gözden kaçırabileceğinden, önerilen türleri, sınırları ve kapasite yönetimini her zaman gözden geçirin.

Evet. GitHub Yardımcı Pilotu Yazarken vektör bildirimlerini, push_back ve insert çağrılarını ve yineleyici döngülerini önerir. Tekrarlayan şablon kodlarını iyi bir şekilde ele alır, ancak derlemeden önce dizinleri, yeniden boyutlandırmayı ve mantığı yine de doğrulamanız gerekir.

Bu yazıyı şu şekilde özetleyin: