Vektorlar - Ma‘lumotlar tuzilmasi va algoritmlar

|
Ma‘lumotlar tuzilmasi va algoritmlar
|
bet | 4/10 | Sana | 06.02.2024 | Hajmi | 1 Mb. | | #152156 |
Bog'liq Ma‘lumotlar tuzilmasi va algoritmlarVektorlar
C++ dasturlash muhitida ma’lumotlarni massivdan tashqari sal
boshqacharoq usulda saqlashning yana bir turi mavjud, ya’ni vektorlar. Vektor
elementlari ustida massiv elementlari ustida bajariladigan amallarni bajarish
mumkin. Ma’lumotlarni massivda saqlashda elementlar soni oldindan ma’lum
bo’lishi kerak. Ayrim paytlarda massivga nechta element kiritilishi ma’lum
bo’lmaydi va o’shanda dinamik dasturlashdan foydalanish kerak bo’ladi, ya’ni
massivga qo’shiladigan elementga xotira ajratishga to’g’ri keladi. Shunday
hollarda vector klassidan foydalanish mumkin. Vector klassi o’zgaruvchan
uzunlikdagi massiv yaratishga yordam beradi. Vektor bu elementlari soni oldindan
ma’lum bo’lmagan bir xil toifadagi elementlar ketma-ketligidir. Vektorning
massivdan farqi, vector uzunligi oldindan berilmaydi va u dastur bajarilishi
mobaynida o’zgarib turadi. Vektor yaratish uchun kutubxonasiga ulanish
kerak, ya’ni dastur boshida #include qatori bo’lishi kerak va vektorni
e’lon qilishning 2 ta usuli mavjud – vektor uzunligini ko’rsatib va bo’sh vektor
ko’rinishida. vector o‘zgaruvchi_nomi;
Masalan, vector test; bu yerda int toifali, test nomli bo’sh vektor
yaratildi. Vektor elementlariga indeks orqali murojaat qilib bo’ladi, lekin bu
ko’rinishda vektor yaratilganda vektor elementiga indeks bilan murojaat qilib
qiymat berib bo’lmaydi, ya’ni quyidagi dastur kodi noto’g’ri:
vector vek;
vek[0]=123;
vek[1]=234;
Bu holda vektorga element kiritish quyidagicha amalga oshiriladi:
vek.push_back(7);//vector oxiriga yangi element 7 ni kiritish
vek.push_front(17);//vector boshiga yangi element 17 ni kiritish
vek.pop_back();// vektor oxirgi elementini o’chirish funksiyasi
vek.pop_front();// vektor 1-elementini o’chirish funksiyasi
Misol:
#include
#include
using namespace std;
int main(){
vector< string > text;
string word;
while(word!="0"){
text.push_back( word );
cin>>word;
}
for(int i=0;isystem("pause");
}
Vektor yaratishning 2-usuli xuddi massivga o’xshash bo’lib, unda vektor
uzunligi oldindan ko’rsatiladi va berilgan uzunlikka mos barcha elementlarga
avtomatik tarzda 0 qiymat beriladi. Vektor elementlariga murojaat xuddi massiv
elementlariga murojaat kabi indeks orqali amalga oshiriladi va qiymat berilishi
mumkin.
#include
#include
using namespace std;
int main()
{
vector< int > ivec(5);
ivec[0]++; //bunda vektor 0-elementi qiymati bittaga oshirildi
ivec[1]=11; //vektor 1-elementiga 11 qiymati berildi
for(int i=0;isystem("pause");
}
Natija: 1 11 0 0 0
Agar bu usulda vektor yaratiladigan bo’lsa, push_back() va push_front()
funksiyalari vektor uzunligini oshiradi. Misol uchun:
#include
#include
using namespace std;
int main()
{
vector< int > ivec(5);
ivec[0]++;
ivec[1]=11;
ivec.push_back(123);
for(int i=0;isystem("pause");
}
Natija: 1 11 0 0 0 123
Vektor ustida quyidagi funksiyalar orqali amal bajarish mumkin:
test.at(i) - test[i] kabi vektor i-elementiga murojaat qilish;
test.asign(n,m) – vektorga m qiymatli n ta element kiritish;
test.front() – vektor ko’rsatkichini 1-elementga o’rnatish;
test.back() - vektor ko’rsatkichini oxirgi elementga o’rnatish;
test.size() – vektor elementlari sonini aniqlash;
test.swap(test2) – test vektori tarkibi bilan test2 vektori tarkibini
almashtirish
test.empty() – vektor bo’shligini tekshirish;
Vektorga oid misol ko’ramiz. Quyidagicha masala qo’yilgan bo’lsin:
massivning juft qiymatli elementlaridan vektor hosil qiling.
#include
#include
using namespace std;
int main(){
vector< int > avec;
int n;cout<<"n=";cin>>n;
int a[n];
for(int i=0;i>a[i];
if(a[i]%2==0) avec.push_back(a[i]);}
cout<<”avec=”;
for(int i=0;isystem("pause");
}
Natija: n=5
1 2 3 4 5
avec= 2 4
|
| |