vector
Vektörler, bir öğe yerleştirildiğinde veya silindiğinde otomatik olarak işlenirken kendisini yeniden boyutlandırabilen dinamik dizilerle aynıdır. Vektör öğeleri, yineleyicileri(iteratorleri) kullanarak erişilebilir. Vektörlerde veri sonuna eklenir. Bazen, dizinin uzatılmasına ihtiyaç duyulabileceği için, sonuna eklemenin farklı zamanları gerekir. Yeniden boyutlandırma yapılmadığından, son öğenin yenilenmesi yalnızca sabit bir zaman alır. Başlangıçta veya ortada ekleme ve silme zamanında doğrusaldır.
Vector Tanımı Başlangıçta boyut vermeden tanımlamak için:
Boyut belirterek tanımlamak için:
Vektörlerle Birlikte Kullanılabilen Bazı Gerekli Fonksiyonlar
begin():Vektörün ilk elemanını döndürür.
end(): Vektörün son elemanını döndürür.
rbegin(): Reverse iterator. Vectordeki son elemanı gösterir.
rend(): Reverse iterator. Vectordeki ilk elemanın öncesini gösterir.
Örnek:
#include <iostream> #include <vector> int main() { std::vector v = {7, 5, 16, 8}; v.push_back(25); v.push_back(13); //vektörü ekrana yazdırmak için; for(int n : v) { std::cout << n << '\n'; } }
push_back(deger): fonksiyonu vectore eleman eklemek için kullanılır. Sondan ekleme işlemi yapar.
Ornek: Kaynak kod
#include <iostream> #include <vector>//Vector kütüphanesini kullanmak için int main() { std::vector vec; // ilk tanımlama, vec.size()=0 size() fonksiyonu vectorun boyutunu verir. std::vector::iterator iter;// Vector iterator tanımı // std::vector::reverse_iterator r_iter; for(int i=0;i<5;i++) { vec.push_back(i+1);// } std::cout<<"Vectordeki elemanlar: (end ve begin ile): "; for (iter=vec.begin(); iter!=vec.end(); ++iter) { std::cout<<*iter<<"\t"; } std::cout<<"\n"; std::cout<<"Vectordeki elemanlar: (rend ve rbegin ile): "; for(r_iter=vec.rbegin(); r_iter!=vec.rend(); ++r_iter) { std::cout<<*r_iter<<"\t"; } return 0; }
Ornek: Kaynak kod
#include <iostream> #include <vector> #include <algorithm> int main () { using namespace std; cout << "Kolay yontemle vektordeki elemanlar siralanacak\n"; cout << "Her satira bir sayi girin. Cikmak icin CTRL-d tusuna basin\n"; vector <int> sayilar; int sayi = 0; while (cin >> sayi) { /* * Okunan sayıyı vektör topluluğunun arkasına ekle */ sayilar.push_back (sayi); } sort (sayilar.begin (), sayilar.end ()); cout << "Siralanmis hali: "; for (int i = 0; i < sayilar.size (); ++i) cout << sayilar [i] << ' '; cout << endl; return 0; }
Eğer yukarıdaki programı biraz daha STL stili yazmak isteseydik şunun gibi yazabilirdik :
#include <iostream> #include <vector> #include <algorithm> #include <iterator> int main () { using namespace std; cout << "Her satira bir sayi girin. Cikmak icin CTRL-d tusuna basin\n"; vector <int> sayilar; copy (istream_iterator<int> (cin), istream_iterator<int> (), // kaynak back_inserter (sayilar)); // hedef sort (sayilar.begin (), sayilar.end ()); cout << "Siralanmis hali: "; copy (sayilar.begin (), sayilar.end (), ostream_iterator <int> (cout, " ")); cout << endl; return 0; }
size(): Vevtördeki eleman sayısını ifade eder.
max_size(): Vektörün tutabileceği maximum eleman sayısını belirtir.
capasity():Vektör için o anda ayrılan saklama alanının boyutunu, eleman sayısı olarak ifade eder.
resize(size type g): Vektörü verilen parametre kadar tekrar boyutlandırır.
empty(): Vektörde eleman olup olmadığını kontrol etmek için kullanılır. True/ false döndürür.
Ornek: kaynak kod
#include <iostream> #include <vector> #include <iostream> #include <vector> int main() { std::vector<int> vec(5); for(int i=0;i<5;i++) { vec.push_back(i+2); } std::cout<<"Size:"<<vec.size()<<std::endl; std::cout<<"Kapasite"<<vec.capacity()<<std::endl; std::cout<<"Max_size:"<<vec.max_size()<<std::endl; return 0; }
Ornek:
#include <iostream> #include <vector> #include <string> int main() { std::vector<int> vec; for(int i=1;i<=10;i++) { vec.push_back(i*10); } std::cout<<"Reference operator [g] vec[2]:"<<vec[2]<<std::endl; std::cout<<"at: vec.at(4): "<<vec.at(4)<<std::endl; std::cout<<"front(): vec.front()= "<<vec.front()<<std::endl; std::cout<<"back(): vec.back()= "<<vec.back()<< std::endl; }
Ornek:
#include <iostream> #include <utility> int main() { auto p = std::make_pair(1, 3.14); std::cout << '(' << std::get<0>(p) << ", " << std::get<1>(p) << ")\n"; std::cout << '(' << std::get(p) << ", " << std::get<double>(p) << ")\n"; }
Ekran Çıktısı:
(1, 3.14) (1, 3.14)
Ornek kullanımlar
#include <iostream> #include <utility> #include <vector> #include <algorithm> //sort() algoritması için eklenmiştir. #include <string> int main() { std::vector<std::pair<int, std::string>> v = { {2, "baz"},{2, "bar"},{1, "foo"}}; // vectör pairi kullanımı gösterilmektedir. std::sort(v.begin(), v.end());// for(auto p: v) { std::cout << "(" << p.first << "," << p.second << ")\n"; } }
Ekran Çıktısı:
(1,foo) (2,bar) (2,baz)
Yukarıdaki kodda 10.satırda sort() algoritması kullanılmıştır. <algorithm> kütüphanesinde tanımlıdır. Parametre olarak vektörün başını ve sonunu alarak sıralama işlemi yapar, buradaki sıralama işlemi ilk veri tipi olan, integer veri tipi üzerinde yapılmıştır.
Paylaşım için teşekkürler.. Çok yararlı bilgiler bunlar başarılarınızın devamını dilerim. teşekkürler
Teşekkürler çok iyi anlatım…