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.

 

  1. push_front(): listenin başına eleman ekler

  2. pop_front(): listenin başındaki elemanı siler

  3. begin(): listenin baş elemanını işaret eden bir işaretçidir.

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