C ++

Cara menggunakan Antrian C ++

Cara menggunakan Antrian C ++

Pengenalan

Antrian adalah koleksi item, di mana item pertama yang ditambahkan ke dalam senarai, mestilah item pertama yang akan dikeluarkan kemudian. Oleh kerana item ditambahkan ke koleksi, ukurannya bertambah, i.e. ia bertambah panjang. Bila-bila masa ada item yang hendak dikeluarkan, item itu mesti yang pertama ditambahkan. Sekiranya item dikeluarkan secara berterusan, maka item berikutnya dikeluarkan, adalah item kedua; yang ketiga dikeluarkan selepas itu, dan seterusnya.

Setelah item pertama dari senarai asal dikeluarkan, item kedua menjadi item pertama. Setelah item kedua dikeluarkan, yang ketiga menjadi item pertama, dan seterusnya.

Contoh antrean kehidupan nyata yang baik adalah ketika orang beratur untuk menunggu perkhidmatan atau kebaikan. Orang pertama dilayan terlebih dahulu sebelum terakhir. Namun, barisan yang dibincangkan dalam tutorial ini, adalah antrian perisian, seperti yang dirancang dalam C++.

FIFO

FIFO bermaksud First-In, First-Out. Ini adalah cara lain untuk menghargai barisan. Ini bermaksud, item pertama yang masuk ke dalam senarai, adalah item pertama yang akan dikeluarkan, setiap kali penghapusan dilakukan. Permulaan senarai disebut kepala atau depan; akhir senarai disebut belakang atau ekor.

Operasi Penting

Baris perisian mesti mempunyai sekurang-kurangnya operasi berikut:

tolak

Operasi ini, menambah elemen baru di bahagian belakang barisan. Operasi ini secara rasmi dipanggil, enqueue.

pergeseran

Operasi ini membuang elemen pertama dalam barisan, dan elemen kedua menjadi elemen pertama yang baru. Operasi ini secara rasmi dipanggil dequeue. Ia dipanggil pop dalam C++.

Artikel ini menerangkan cara menggunakan struktur data barisan C ++. Anda harus mengetahui petunjuk dan rujukan C ++ untuk memahami sisa artikel ini.

Kelas dan Objek

Kelas adalah sekumpulan pemboleh ubah dan fungsi yang berfungsi bersama, di mana pemboleh ubah tidak mempunyai nilai yang ditetapkan. Apabila nilai diberikan kepada pemboleh ubah, kelas menjadi objek. Nilai yang berbeza yang diberikan kepada kelas yang sama menghasilkan objek yang berbeza; iaitu, objek yang berbeza adalah kelas yang sama dengan nilai yang berbeza. Membuat objek dari kelas dikatakan sebagai objek.

Nama, beratur, adalah kelas. Objek yang dibuat dari kelas giliran mempunyai nama yang dipilih pengaturcara.

Fungsi yang tergolong dalam kelas diperlukan untuk membuat objek dari kelas. Dalam C ++, fungsi itu mempunyai nama yang sama dengan nama kelas. Objek yang dibuat (disusun) dari kelas mempunyai nama yang berbeza yang diberikan kepada mereka, oleh pengaturcara.

Membuat objek dari kelas bermaksud membina objek; ia juga bermaksud memberi contoh.

Program C ++ yang menggunakan kelas barisan, bermula dengan baris berikut di bahagian atas fail:

#sertakan
#sertakan
menggunakan ruang nama std;

Baris pertama adalah untuk input / output. Baris kedua adalah membenarkan program menggunakan semua ciri kelas beratur. Baris ketiga membolehkan program menggunakan nama di ruang nama standard.

Melebihi Fungsi

Apabila dua atau lebih tandatangan fungsi yang berbeza mempunyai nama yang sama, nama itu dikatakan berlebihan. Apabila satu fungsi dipanggil, jumlah dan jenis argumen, tentukan fungsi mana yang sebenarnya dijalankan.

Pembinaan

beratur nama ()

Deklarasi berikut menunjukkan giliran bernama, que jenis int.

beratur que;

Barisan kosong. Deklarasi dimulakan dengan kata terpelihara, antrian diikuti dengan tanda kurung sudut dengan jenis data. Kemudian anda mempunyai nama pengaturcara untuk barisan.

Pembinaan dengan Initializer List

Definisi berikut menunjukkan cara membuat barisan dengan senarai pemula:

beratur que (1.1, 2.2, 3.3, 4.4);

Menghancurkan Antrian

Untuk memusnahkan barisan, biarkan ia keluar dari ruang lingkup.

Akses Elemen Beratur

tolak (nilai)

Antrian adalah senarai First-In-First-Out. Jadi, setiap nilai ditambah dari belakang. Segmen kod berikut membuat barisan kosong, selepas itu lima nilai apungan ditambahkan dari belakang:

beratur que;
que.tolak (1.1);
que.tolak (2.2);
que.tolak (3.3);
que.tolak (4.4);
que.tolak (5.5);

saiz () konst

Ini mengembalikan bilangan elemen dalam barisan. Kod berikut menggambarkan:

beratur que;
que.tolak (1.1); que.tolak (2.2); que.tolak (3.3); que.tolak (4.4); que.tolak (5.5);
cout << que.size() << '\n';

Keluarannya adalah 5.

depan ()

Ini mengembalikan rujukan ke elemen pertama dalam barisan, tanpa membuang elemen tersebut. Keluaran kod berikut adalah 1.1.

beratur que;
que.tolak (1.1); que.tolak (2.2); que.tolak (3.3); que.tolak (4.4); que.tolak (5.5);
cout << que.front() << '\n';

Elemen tidak dikeluarkan dari barisan.

depan () konst

Apabila pembinaan antrian didahului oleh const, ungkapan "depan () const" dijalankan dan bukannya "depan ()". Contohnya digunakan dalam kod berikut.

beratur const que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';

Rujukan tetap dikembalikan. Elemen tidak dikeluarkan dari vektor. Elemen giliran tidak boleh diubah.

belakang ()

Ini mengembalikan rujukan ke elemen terakhir dalam barisan, tanpa membuang elemen tersebut. Keluaran kod berikut adalah 5.5.

beratur que;
que.tolak (1.1); que.tolak (2.2); que.tolak (3.3); que.tolak (4.4); que.tolak (5.5);
cout << que.back() << '\n';

belakang () konst

Apabila pembinaan antrian didahului oleh const, ungkapan "back () const" dijalankan bukan "back ()". Contohnya digunakan dalam kod berikut.

beratur const que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.back() << '\n';

Rujukan tetap dikembalikan. Elemen tidak dikeluarkan dari barisan. Dengan konstanta sebelumnya untuk pembinaan antrian, elemen dalam barisan tidak dapat diubah.

Kapasiti Beratur

saiz () konst

- lihat di atas

kosong () konst

Ini mengembalikan 1 untuk true jika tidak ada unsur dalam barisan, atau 0 untuk false jika barisan kosong. Kod berikut menggambarkan ini:

beratur que1 (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que1.empty() << '\n';
beratur que2;
cout << que2.empty() << '\n';

Keluarannya adalah:

0
1

Pengubah Baris

pop ()

Antrian adalah FIFO, jadi elemen yang harus dikeluarkan mesti dikeluarkan dari bahagian atas (kepala) barisan. Fungsi anggota ini membuang elemen pertama tanpa mengembalikannya. Kod berikut menggambarkan ini:

beratur que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';
que.pop ();
cout << que.size() << '\n';

Keluarannya adalah:

1.1
4

a.pertukaran (b)

Dua barisan boleh ditukar, seperti yang digambarkan dalam segmen kod ini:

beratur que1 (1.1, 2.2, 3.3, 4.4, 5.5);
beratur que2 (10, 20);
que1.pertukaran (que2);
cout << "First element and size of que1:
"<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
que2.depan () <<", "<< que2.size() << '\n';

Keluarannya adalah:

Elemen dan ukuran pertama que1: 10, 2

Elemen dan ukuran pertama que2: 1.1, 5

Perhatikan bahawa panjang barisan dinaikkan jika perlu. Juga, nilai yang tidak mempunyai penggantian, digantikan oleh beberapa nilai lalai. Jenis data mestilah jenis yang sama.

Pengendali Kesamaan dan Relasi untuk Antrian

Untuk watak biasa dalam huruf C ++, dalam urutan menaik, angka muncul sebelum huruf besar, yang muncul sebelum huruf kecil. Watak ruang hadir sebelum sifar dan semuanya.

Pengendali Kesamarataan

Mengembalikan 1 untuk true dan 0 untuk false.

Pengendali ==

Mengembalikan 1 jika kedua-dua barisan mempunyai ukuran yang sama dan elemen yang sesuai sama; jika tidak, ia mengembalikan 0. Contoh:

beratur que1 ("jenis", "sesuatu yang lain");
beratur que2 ("jahat");
int num = que1 == que2;
cout << num << '\n';

Keluarannya adalah: 0.

The != Pengendali

- bertentangan dengan perkara di atas. Contoh:

beratur que1 ("jenis", "sesuatu yang lain");
beratur que2 ("jahat");
int num = que1 != que2;
cout << num << '\n';

Keluarannya adalah: 1.

Pengendali Perhubungan

Mengembalikan 1 untuk true dan 0 untuk false.

The < Operator

Mengembalikan 1 jika barisan pertama adalah subset awal dari barisan kedua, dengan unsur-unsur dari dua bahagian yang sama sama dan dalam urutan yang sama. Sekiranya kedua-dua barisan berukuran sama atau berbeza, dan bergerak dari kiri ke kanan, elemen ditemui dalam barisan pertama yang kurang dari elemen yang sesuai dalam barisan kedua, maka 1 masih akan dikembalikan. Jika tidak, 0 dikembalikan. Contoh:

beratur que1 ("jenis", "sesuatu yang lain");
beratur que2 ("jahat");
int num = que1 < que2;
cout << num << '\n';

Keluarannya adalah 1. < does not include the case when the size and order are the same.

Pengendali>

- bertentangan dengan perkara di atas. Contoh:

beratur que1 ("jenis", "sesuatu yang lain");
beratur que2 ("jahat");
int num = que1> que2;
cout << num << '\n';

Keluaran: 0

The <= Operator

- sama seperti < but includes the case when the size and order are the same. Example:

beratur que1 ("jenis", "sesuatu yang lain");
beratur que2 ("jahat");
int num = que1 <= que2;
cout << num << '\n';

Keluaran: 1

Pengendali> =

- bertentangan dengan perkara di atas. Contoh:

beratur que1 ("jenis", "sesuatu yang lain");
beratur que2 ("jahat");
int num = que1> = que2;
cout << num << '\n';

Keluaran: 0

Kelas dan Objek Instantinya

Nilai adalah untuk jenis data, seperti objek instantiated ke kelas. Pembinaan barisan juga dapat menerima kelas sebagai jenis data. Program berikut menggambarkan ini:

#sertakan
#sertakan
menggunakan ruang nama std;
kelas TheCla

awam:
int int;
char statik;
kekosongan kosong (char cha, const char * str)

cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';

keseronokan kekosongan statik (char ch)

jika (ch == 'a')
cout << "Official static member function" << '\n';

;
int utama ()

TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
beratur que;
que.tolak (obj1); que.tolak (obj2); que.tolak (obj3); que.tolak (obj4); que.tolak (obj5);
cout << que.size() << '\n';
pulangan 0;

Keluarannya adalah 5.

Senarai Terpaut

Senarai barisan secara teknikal disebut senarai terpaut. Terdapat dua jenis senarai terpaut untuk barisan: senarai berangkai tunggal dan senarai berganda.

Elemen senarai yang dipautkan secara tunggal dapat dilaksanakan oleh struktur dua anggota. Seorang ahli memegang penunjuk ke elemen seterusnya dan ahli yang lain memegang datum (tunggal untuk data).

Unsur senarai berganda boleh dilaksanakan oleh struktur tiga anggota. Anggota tengah memegang datum, sementara anggota pertama dan ketiga memegang petunjuk ke elemen berdekatan mereka.

Aplikasi Antrian

Antrian adalah struktur data pertama-dalam-pertama-keluar. Terdapat situasi dalam pengkomputeran ketika data tiba dalam bentuk giliran, memerlukan perilaku pertama-dalam-pertama-keluar.

Berkongsi Sumber Komputer

Sumber dalam komputer adalah komponen fizikal atau maya dengan ketersediaan terhad. Mereka termasuk CPU, kad video, cakera keras, dan memori. Berkongsi sumber seperti itu memerlukan barisan.

Mengendalikan Gangguan

Perisian komputer perlu mengganggu komputer dari semasa ke semasa. Gangguan harus ditangani dengan cara yang sama ketika mereka tiba. Ini memerlukan barisan.

Urus maklumat.

Antrian boleh digunakan, misalnya, untuk mengelola file aplikasi untuk pekerjaan, jika file tersebut disimpan di dalam komputer.

Kesimpulannya

Antrian adalah struktur data senarai, yang merupakan senarai berangkai tunggal atau senarai berganda. Sebagai peraturan, elemen pertama yang masuk ke dalam senarai adalah elemen pertama yang keluar. C ++ menyediakan struktur data beratur di perpustakaan standardnya. Kategori fungsi anggota dan pengendali yang tersedia untuk struktur ini adalah pembinaan giliran, akses elemen giliran, kapasiti barisan, pengubah antrian, dan operator giliran yang terlalu banyak.

Sebarang struktur data barisan mesti menyediakan sekurang-kurangnya, fungsi anggota push () dan pop (). tekan () bermaksud, menghantar elemen baru di bahagian belakang barisan; dan pop () bermaksud, membuang elemen yang berada di bahagian hadapan barisan. Malangnya, dalam C ++, fungsi ini tidak mengembalikan nilai yang didorong atau muncul. Oleh itu, untuk mengetahui elemen terakhir sebelum menolak, fungsi belakang () tambahan harus digunakan; dan untuk mengetahui elemen pertama sebelum muncul, fungsi depan tambahan () harus digunakan.

Nilai adalah untuk jenis data, seperti objek instantiated ke kelas. Jadi, kelas tertentu boleh digunakan sebagai jenis data untuk contoh templat antrian. Objek yang berbeza untuk kelas menjadi seperti nilai yang berbeza untuk kelas.

Antrian mempunyai aplikasi di komputer. Ini dapat digunakan, misalnya, untuk mengelola file aplikasi untuk pekerjaan, jika file tersebut disimpan di dalam komputer.

Chrys

Cara menangkap dan streaming sesi permainan anda di Linux
Pada masa lalu, bermain permainan hanya dianggap sebagai hobi, tetapi seiring dengan berjalannya waktu, industri permainan menyaksikan pertumbuhan yan...
Permainan Terbaik untuk Dimainkan dengan Penjejakan Tangan
Oculus Quest baru-baru ini memperkenalkan idea hebat penjejakan tangan tanpa pengawal. Dengan jumlah permainan dan aktiviti yang semakin meningkat yan...
Cara Menunjukkan Overlay OSD dalam Aplikasi dan Permainan Linux Skrin Penuh
Bermain permainan skrin penuh atau menggunakan aplikasi dalam mod skrin penuh bebas gangguan dapat memisahkan anda dari maklumat sistem yang relevan y...