Vektorlar va ko’p o’lchovli massivlar bilan ishlash, ro‘yxat, navbat va stek
Ma’ruza rejasi:
Vektor tushunchasi
Ko’p o’lchovli massivlar
Ko‘p o‘lchamli statik massivlar
Ro‘yxat bilan tanishish.
Navbat bilan tanishish.
Stek bilan tanishish.
Dinamik ma’lumotlat strukturasi bilan ishlash.
Kalit so’zlar:, ro’yxat, manzil, nolinchi ko’rchsatkich, tugun, adres olish &, bo’shatish, ko’rsatkich, virtual destruktor, xotira, xotira chiqishi, destruktor, toifani o’zlashtirish, resurslar chiqishi, a’zo destruktori.
Vektor tushunchasi
Foydalanuvchi kiritmasidan qiymatlarni yig‘uvchi dasturni yozganingizda nechta qiymatlar bo‘lishini bilmaysiz. Afsuski, dastur tuzilganda jadval hajmi aniq bo‘lishi kerak.
Bo‘limda bu muammoni qisman to‘ldirilgan jadvallar qanday yo‘naltirishni ko‘rdingiz. biz quyidagi bo‘limlarda muhokama qiladigan bu vektor tuzilishi qulayroq echimni taklif etadi. Vektor qiymatlar ketma ketligini xuddi jadval qilgandek yig‘adi lekin uning hajmi o‘zgarishi mumkin.
Vektorni aniqlaganingizda burchak kronshteyndagi elementlar turini aniqlashtirasiz. Quyidagicha:
vector values;
Boshlang‘ich hajmni erkin aniqlashingiz mumkin. Masalan, Bu erda boshlang‘ich
hajmi 10 ga teng bo‘lgan vektorning ta’rifi:
vector values(10);
agar vektorni boshlang‘ich hajmsiz aniqlasangiz uning hajmi 0 ga teng.
Jadvalning 0 hajmini aniqlashda hech qanday nuqta bo‘lmaganda boshlang‘ich hajmi 0 ga teng vektorlarga ega bo‘lish foydali va keyin ular keraklicha o‘stiriladi. Dasturingizda vektorlardan foydalanish uchun siz vektor sarlavhasini ham kiritishingiz zarur
defining Vectors
vector numbers(10); 10 butun vektor
vector names(3); 3 trosli vektor
vector values; 0 hajmli vektor
vector values(); Xato: Vektorni aniqlamadi.
Agar qo‘shimcha elementlar kerak bo‘lsa elementni vektorning oxiriga qo‘shish uchun push_back funksiyasini qo‘llaysiz. bunda uning hajmi 1 ga ortadi. Push_back funksiyas i quyidagi nuqtali notatsiya bilan chaqirishingiz shart bo‘lgan a’zo funksiyasidir:
values.push_back(37.5);
Bu chaqiruvdan so‘ng 14 shakldagi vektor qiymati 3 hajmga teng va qiymatlar
values[2] qiymat 37.5 ga teng.
Bo‘sh vektor bilan boshlash va push_back funksiyasi bilan uni to‘ldirish ommalashgan. Masalan,
vector values; // Dastlabki bo‘sh
values.push_back(32); // endi qiymatla 1 hajmga va element esa 32 hajmga ega values.push_back(54); // endi qiymatla 2 hajmga va element esa 32,54 hajmga ega values.push_back(37.5); // endi qiymatla 3 hajmga va element esa 32,54,37.5 hajmga ega
push_back a’zo funksiyasi uchun boshqa bir foydalanish bu vektorni kiritma qiymatlari bilan to‘ldirish.
vector values; // Dastlabki bo‘sh
double input;
while (cin >> input)
{
values.push_back(input);
}
Bu kiritmassikl 6.2.10 bo‘limdagidan osonroq va oddiyroq ekanini qayd eting. Boshqa a’zo funksiyasi, pop_back, vektorning oxirgi elementini olib tashlash, uning xajmini bittaga kichiklashtirish. (15 shaklga qarang):
values.pop_back();
Vektorlar va funksiyalar
Siz boshqa qiymatlar kabi vektorlarni funksiya parametri sifatida ishlatishingiz mumkin. Masalan, quyida funksiya flouting member nuqtasi sonlari vektorining umumiy sonini hisoblaydi:
double sum(vector values)
{
double total = 0;
for (int i = 0; i < values.size(); i++)
{
total = total + values[i];
}
return total;
}
Bu funksiya vektor elementlarini aylanib o‘tadi, lekin ularni o‘zgartirmaydi.
void multiply(vector& values, double factor) // Note the &
{
for (int i = 0; i < values.size(); i++)
{
values[i] = values[i] * factor;
}
}
Ba’zi programmistlar o‘zgartirilmaydigan vektor parametrlari uchun turg‘un yo‘nalishdan foydalanadilar. (Maxsus mavzu 5.2) masalan:
double sum(const vector& values) // const & added for efficiency
funksiya vektorni qaytarishi mumkin. YAna vektorlar qolgan qiymatlardan
boshqacha emas. funksiyada natijani o‘rnating va uni qaytaring. bu misolda, squares funksiyasi vektorni 02 up to (n – 1)2 qaytaradi:
vector squares(int n)
{
vector result;
for (int i = 0; i < n; i++)
{
result.push_back(i * i);
}
return result;
}
Do'stlaringiz bilan baham: |