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