forward_list
forward_list, listenin herhangi bir yerindeki elemanların hızlı eklenmesi ve çıkarılmasını destekleyen bir şablon sınıfıdır. Tek bağlantılı bir liste olarak uygulanır. List ile karşılaştırıldığında, bu şablon, çift yönlü yinelemeye gerek duymaz.
push_front(): listenin başına eleman ekler
pop_front(): listenin başındaki elemanı siler
begin(): listenin baş elemanını işaret eden bir işaretçidir.
end(): bu fonksiyon listede bir yeri işaret etmez,yalnızca tüm dizi yazdırılmak istenir ise begin() ile beraber kullanılır
Listeye eleman ekleme ve silme
int main() { forward_list<int> l1; l1.push_front(10); l1.push_front(20); l1.push_front(30); l1.push_front(40); l1.push_front(50); // ekleme işlemi başa yapıldığı için sıralama 50 40 30 20 10 şeklinde oldu cout << *l1.begin() << endl; // listenin baş elemanı 50 l1.pop_front(); // listenin başındaki eleman silindi (50) cout << *l1.begin() << endl; // listenin başındaki eleman 40 getchar(); return 0; } // çıktı // 50 // 40
Bütün listeyi yazdırma
int main(){ forward_list<int> l1; l1.push_front(10); l1.push_front(20); l1.push_front(30); l1.push_front(40); l1.push_front(50); for (auto i = l1.begin(); i != l1.end(); i++) cout << *i << " "; cout << endl; getchar(); return 0; } // çıktı // 50 40 30 20 10
İstenilen bir yere eleman ekleme
int main(){ forward_list<int> l1; l1.push_front(10); l1.push_front(20); l1.push_front(30); l1.push_front(40); l1.push_front(50); for (auto i = l1.begin(); i != l1.end(); i++) cout << *i << " "; // liste 50 40 30 20 10 cout << endl; l1.insert_after(l1.begin(), 45); // listenin baş elemanın sonrasına 35 ekle for (auto i = l1.begin(); i != l1.end(); i++) cout << *i << " "; // yeni liste 50 45 40 30 20 10 cout << endl; getchar(); return 0; } // çıktı // 50 40 30 20 10 // 50 45 40 30 20 10
Listenin istenilen yerine dizi ekleme
int main(){ forward_list<int> l1; l1.push_front(10); l1.push_front(20); l1.push_front(30); l1.push_front(40); l1.push_front(50); for (auto i = l1.begin(); i != l1.end(); i++) cout << *i << " "; // liste 50 40 30 20 10 cout << endl; int a[] = { 8 , 6 , 4 , 2 }; l1.insert_after(l1.begin(), a, a + 4); // 50 elemanının sonrasına [a,a+4) aralığını ekleme for (auto i = l1.begin(); i != l1.end(); i++) cout << *i << " "; // 50 8 6 4 2 40 30 20 10 cout << endl; getchar(); return 0; } // çıktı // 50 40 30 20 10 // 50 8 6 4 2 40 30 20 10
Dışarıdan pointer tanımlayıp listeyi gezme kodu
int main(){ forward_list<int> l1; l1.push_front(10); l1.push_front(20); l1.push_front(30); l1.push_front(40); l1.push_front(50); auto fi = next(l1.begin(),4); // fi listenin baş elemanından başlayıp 4 ilerleyecek (10) cout << *fi<<endl; // 10 auto it = l1.begin(); // tüm listeyi yaz while (it != l1.end()) { cout << *it << " "; // 50 40 30 20 10 it = next(it, 1); } getchar(); return 0; } // çıktı // 10 // 50 40 30 20 10