C++ çalışma sorusu – 2

Elinizde tamsayı tutan bir vector nesnesi var. Yapmanız gereken bu vector‘de yinelenen tüm tamsayıları vector‘den silmek. Yazdığınız kodun çalıştırılmasından sonra vector‘de her tamsayıdan birer tane kalmış olacak ve tamsayıların silme işleminden önceki sırası korunacak:

Yukarıdaki program çalıştırıldığında ekran çıktısı aşağıdaki gibi olmalı:
Share

Necati Ergin

C ve Sistem Programcıları Derneğinde eğitmen olarak çalışıyor.

Bunlar da ilginizi çekebilir

C++ çalışma sorusu – 2” için bir yorum

  1. struct target_less
    {
    template
    bool operator()(It const &a, It const &b) const { return *a < *b; }
    };
    struct target_equal
    {
    template
    bool operator()(It const &a, It const &b) const { return *a == *b; }
    };

    template It uniquify(It begin, It const end)
    {
    std::vector v;
    v.reserve(static_cast(std::distance(begin, end)));
    for (It i = begin; i != end; ++i)
    {
    v.push_back(i);
    }
    std::sort(v.begin(), v.end(), target_less());
    v.erase(std::unique(v.begin(), v.end(), target_equal()), v.end());
    std::sort(v.begin(), v.end());
    size_t j = 0;
    for (It i = begin; i != end && j != v.size(); ++i)
    {
    if (i == v[j])
    {
    using std::iter_swap; iter_swap(i, begin);
    ++j;
    ++begin;
    }
    }
    return begin;
    }

Yorumlar kapatıldı.

Kod Eklemek İçin Okuyun