Hlavní navigace

Názor ke článku Bezpečné programování v C++ I od Raoul.Duke - Niekolko pripomienok, podla mna std::list neni ekvivalent python...

  • 9. 3. 2009 12:53

    Raoul.Duke (neregistrovaný)

    Niekolko pripomienok, podla mna std::list neni ekvivalent python list, skor std::vector sa k nemu blizi kedze podporuje aj pristup k nahodnemu prvku (random access), dalej filter sa da spravit aj cez remove_copy_if() (s invertovanou podmienkou v isEven) a printList by som parametrizoval ako kontajner a nie ako polozku list-u...

    template
    void printList(T const &List, std::string const &desc = "List contents")
    {
    std::cout << desc << ": [";

    for(typename T::const_iterator it = List.begin(), end = List.end(); it != end; ++it)
    std::cout << *it << (it < end - 1 ? "," : "");

    std::cout << "]" << std::endl;
    }

    bool isEven(const int &i)
    {
    return !((i % 2) == 0);
    }

    int main(int argc, char* argv[])
    {
    std::vector l;
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);

    printList(l, "Original list");

    std::vector out;
    std::remove_co­py_if(l.begin(), l.end(), std::back_inser­ter(out), std::ptr_fun(­isEven));
    printList(out);

    return 0;

    }