C ++ da dinamik massivlar (belgilar majmuasi yoki yangi qatormi?)
Agar ob'ektlarning dinamik majmuasini yaratmoqchi bo'lsam:
C ++-ni avtomatik ravishda tugun moslamalarini yaratish va barcha tugunlar uchun standart konstruktorni chaqiradigan yangi kalit so'z yordamida qator yaratishingiz mumkin.
node* nodes = new node[10];
Yoki tugunlarga markerlar majmuasini yaratish va tugunlarni alohida-alohida tuzish mumkin.
node* nodes[10];
for (int i = 0; i < 10; i++){
nodes[i] = new node();}
Yoki qachon foydalanish kerak? Birinchi misolda, yangi kalit so'zni qator bilan ishlatishda dinamik ravishda ajratilgan tugmalar mavjudmi?
Ushbu ikkita kod zarralarini o'rtasida katta farq bor.
Ikkinchi holatda quyidagi ta'rif ishlatiladi
node* nodes[10];
qatorga yangi elementlar qo'sha olmaysiz. Jildning o'lchami sobit.
Birinchi navbatda operatorni butun qator uchun yangi foydalanganingizda
node* nodes = new node[10];
array o'zboshimchalik bilan elementlar soni bilan qayta ajratilishi mumkin.
Shu sababli, asosiy mezon quyidagilardan iborat: agar siz asosiy kattalikni standart konstruktorga ega bo'ladimi yoki yo'qmi, aniq o'lchamdagi qatorga kerakmi yoki yo'qmi.
Ushbu ikkita kod zarralarini o'rtasida katta farq bor.
Ikkinchi holatda quyidagi ta'rif ishlatiladi
node* nodes[10];
qatorga yangi elementlar qo'sha olmaysiz. Jildning o'lchami sobit.
Birinchi navbatda operatorni butun qator uchun yangi foydalanganingizda
node* nodes = new node[10];
array o'zboshimchalik bilan elementlar soni bilan qayta ajratilishi mumkin.
Shu sababli, asosiy mezon quyidagilardan iborat: agar siz asosiy kattalikni standart konstruktorga ega bo'ladimi yoki yo'qmi, aniq o'lchamdagi qatorga kerakmi yoki yo'qmi.
For **Dynamic Allocation** we can use Vector in C++
int main() {
vector v1;
int x;
for(int j=0;j<=3;j++) {
cin>>x;
v1.push_back(x);// Here we pushing 4 values to the Vector.. }
v1.push_back(12);//Adding one more value to Vector dynamically
for(int i=0;I For **Dynamic Allocation** we can use Vector in C++
int main() {
vector v1;
int x;
for(int j=0;j<=3;j++) {
cin>>x;
v1.push_back(x);// Here we pushing 4 values to the Vector.. }
v1.push_back(12);//Adding one more value to Vector dynamically
for(int i=0;I
For **Dynamic Allocation** we can use Vector in C++
int main(){
vector v1;
int x;
for(int j=0;j<=3;j++) {
cin>>x;
v1.push_back(x);// Here we pushing 4 values to the Vector..
}
v1.push_back(12);//Adding one more value to Vector dynamically
for(int i=0;I
node turidagi bitta elementni saqlash uchun xotirani ajratish uchun birinchi ifoda ishlatilganidan tashqari, ular qanday yaratilganidan farq yo'q. Ikkinchisi esa node turidagi elementlarni blokirovkalash uchun ishlatiladi. Ob'ektlarning dinamik majmuasini yaratish dinamik ravishda siz yaratgan narsalaringizdan qat'i nazar, har bir obyektni ajratadi. Ikkala o'rtada bu erda mavjud bo'lgan yagona farq, yangi yaratilgan tugun bilan alohida-alohida yoki boshqacha ish qilmasligingiz kerakmi yoki yo'qmi.
node turidagi bitta elementni saqlash uchun xotirani ajratish uchun birinchi ifoda ishlatilganidan tashqari, ular qanday yaratilganidan farq yo'q. Ikkinchisi esa node turidagi elementlarni blokirovkalash uchun ishlatiladi. Ob'ektlarning dinamik majmuasini yaratish dinamik ravishda siz yaratgan narsalaringizdan qat'i nazar, har bir obyektni ajratadi. Ikkala o'rtada bu erda mavjud bo'lgan yagona farq, yangi yaratilgan tugun bilan alohida-alohida yoki boshqacha ish qilmasligingiz kerakmi yoki yo'qmi
Dostları ilə paylaş: |