Информация об изменениях

Сообщение Re[2]: C++ идея для стандарта. от 02.03.2018 13:35

Изменено 22.04.2019 9:18 deleted2

Re[2]: C++ идея для стандарта.
Здравствуйте, rean, Вы писали:

pkl>>Жопа ли это? Я тупой наркоман? Можно ли это сделать уже щас без вундервафлинга?


R>А три итератора и использование обычного while цикла и трех проверок на end() уже не C++? Надо обязательно стандарт менять?


Посмотрел, насколько сложно получается. Получается не сложно и вполне читаемо:


    std::vector<int> a = {1, 2, 3};
    std::vector<std::string> b = {"hello", "world", "foo", "bar"};
    std::vector<int> c = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};

    auto ia = a.begin();
    auto ib = b.begin();
    auto ic = c.begin();

    for (;;) {
        bool in_a = ia != a.end();
        bool in_b = ib != b.end();
        bool in_c = ic != c.end();
        if (!(in_a || in_b || in_c)) break;

        if (in_a)
            std::cout << *ia;
        else
            std::cout << "-";

        if (in_b)
            std::cout << ", " << (*ib).c_str();
        else
            std::cout << ", -";

        if (in_c)
            std::cout << ", " << *ic;
        else
            std::cout << ", -";

        std::cout << std::endl;

        if (in_a) ++ia;
        if (in_b) ++ib;
        if (in_c) ++ic;
    };


Вывод:

1, hello, 9
2, world, 8
3, foo, 7
-, bar, 6
-, -, 5
-, -, 4
-, -, 3
-, -, 2
-, -, 1
-, -, 0


Большая часть сложностей из-за std::cout, а проверять где находишься внутри векторов и проверять не закончилось ли неожиданно в любом месте, все равно придется. Никакого синтаксического сахара сделать не получится. Только все усложнит.
Re[2]: C++ идея для стандарта.
deleted