Xatoni tuzatish uchun quyidagi yechimdan foydalanish mumkin:
for (set::reverse_iterator rit = myset.rbegin(); rit != myset.rend(); ++rit)
std::cout << ' ' << *rit;
7- myset.swap(second): ni o’rniga second.swap(first); yozilsa nima hodisa sodir buladi:
Agar myset.swap(second); o'rniga second.swap(first); yozilsa, quyidagilar sodir bo'ladi:
myset.swap(second);
Bu holda myset va second konteynerlar o'zaro almashtiriladi. myset konteynerining elementi second konteyneriga, second konteynerining elementi esa myset konteyneriga o'tadi.
Endi second.swap(first); yozilsa:
second.swap(first);
Bu yerda second va first konteynerlar o'zaro almashtiriladi. second konteynerining elementi first konteyneriga, first konteynerining elementi esa second konteyneriga o'tadi.
8- set va multisetning operator= dasturning qaysi qismlarida foydalanilgan va nima uchun:
set va multiset turlari uchun operator= dasturning quyidagi qismlarida qo'llanilgan:
1. second = first;
set second;
second = first;
Bu yerda first setning nusxasi second setga yuklanadi. operator= bu yerda set konteynerlari orasidagi nusxalash uchun ishlatilgan.
2. myset.swap(second);
myset.swap(second);
Bu holda myset va second setlari o'zaro almashinadi. operator= emas, balki swap() operatori ishlatilgan.
Nima uchun operator= ishlatilgan?
set va multiset konteynerlar statik o'lchamlarga ega bo'lgan konteynerlar, ularning mazmunini operator= yordamida nusxalash mumkin. Bu second konteyneriga first konteynerning to'liq nusxasini olish uchun qo'l keladi.
Agar second konteynerida oldin elementlar bo'lsa, ular yangi first konteynerning elementlari bilan almashinadi. Bu operator= yordamida amalga oshiriladi.
Shuningdek, swap() operatori ham bu konteynerlar uchun qo'llanilgan, chunki ular tezkor va samarali bajariladi.
Xulosa qilib aytganda, set va multiset konteynerlar uchun operator= nusxalash, swap() esa konteynerlarni almashtirish uchun qo'llanilgan.
|