steinkrauz - Кресты -- говно

> Recent Entries
> Archive
> Friends
> User Info

March 29th, 2021


Previous Entry Add to Memories Tell A Friend Next Entry
09:53 am - Кресты -- говно
Рассмотрим сферический пример в вакууме: две проце дуры, каждая из которых итерирует последовательный коньтейнер и добавляет туда элементы.
#include <iostream>
#include <vector>
#include <list>

using namespace std;

void fart1()
{
        vector<int> c;
        c.push_back(1);
        for(auto a:c) {
                c.push_back(a++);
                if (c.size()>10) break;
        }
        cout<<"Count:"<<c.size()<<"\n";
}

void fart2()
{
        list<int> c;
        c.push_back(1);
        for(auto a:c) {
                c.push_back(a++);
                if (c.size()>10) break;
        }
        cout<<"Count:"<<c.size()<<"\n";
}

int main()
{
        fart1();
        fart2();
        return 0;
}


Казалось бы, в языке здорового человека никаких различий быть не может. Но плюсы считают по-другому:
[stk@archtest Source]$ ./cppshit 
Count:2
Count:11



ибо у этих пидоров реализация течёт сквозь абстракцию даже в стандартной библиотеке, причём на официальном, мать их, уровне.

(15 comments | Leave a comment)

Comments:


[User Picture]
From:[info]wieiner_
Date:March 29th, 2021 - 09:52 am
(Link)
прикольно.
а почему так?
препроцессор по разному раскручивает заголовок цикла
для вектора и для листа?
[User Picture]
From:[info]steinkrauz
Date:March 29th, 2021 - 10:05 am
(Link)
Не-а. Там в любом случае синтаксических сахар для константного итератора. Просто в векторе push_back изменяет конечный итератор, а в листе нет (так как векторе это ссылка на следующую ячейку памяти, а в листе -- указатель на специалный объект). Поэтому итерируя вектор мы доходим до условия конца цикла, а итерируя лист -- не дойдём никогда, так как перед конечным элементом всегда будет появляться новый элемент.

Это, собственно, и есть протечка: поведение абстрактной операции итерации по изменяющемуся контейнеру зависит от реализации этого самого контейнера.
[User Picture]
From:[info]wieiner_
Date:March 29th, 2021 - 10:10 am
(Link)
прикол!
с другой стороны в этом вся философиия крестов,
в погоне за эффективностью, они не формулируют никаких жостких абстракций, а идут на поводу у эффективной реализации,
и отличия реализации (сcылка на следующую ячейку памяти -- указатель на специальный обьект) проявляются такими уродждивыми абузами абстракции.
From:(Anonymous)
Date:March 29th, 2021 - 04:42 pm
(Link)
ебать сколько умных слов
а пишешь хуйню какуюто
[User Picture]
From:[info]wieiner_
Date:March 29th, 2021 - 09:54 am
(Link)
даа..нельзя чтобы реализация так абюзила абстракцию.. ну столлман со страуструпом исправят там.
From:(Anonymous)
Date:March 29th, 2021 - 10:10 am
(Link)
Столлмана сначала нужно спасти. А кресты заменить на нормальный язык.
А труп страуса, ну да фиг с ним.
[User Picture]
From:[info]wieiner_
Date:March 29th, 2021 - 10:11 am
(Link)
ну пусть едет в Мариуполь, я его тут спрячу, еба.
[User Picture]
From:[info]steinkrauz
Date:March 29th, 2021 - 10:15 am
(Link)
Это традиция:

C++98: all the iterators and references before the insertion point remain valid.

C++21: references, pointers, and iterators before the insertion point remain valid but those at or after the insertion point, including the past-the-end iterator, are invalidated.

From:(Anonymous)
Date:March 29th, 2021 - 10:18 am
(Link)
и на этом пишут браузеры? ужс
From:(Anonymous)
Date:March 29th, 2021 - 10:29 am
(Link)
Да пошел ты нахуй.
From:(Anonymous)
Date:March 29th, 2021 - 05:14 pm
(Link)
плюсоеб хуже пидораса
From:(Anonymous)
Date:March 29th, 2021 - 05:18 pm
(Link)
Ёбаное блядское говно эти шаблонные контейнеры. Я в крестах свой набор рантаймово-полиморфных генериков использую, шарп/ява-стайл.
From:(Anonymous)
Date:March 29th, 2021 - 08:46 pm
(Link)
Для эффективной защиты от рантаймово-полиморфных генериков необходимо применение проактивных методов защиты, таких как запрет не шаблонных контейнеров.
[User Picture]
From:[info]steinkrauz
Date:March 29th, 2021 - 09:05 pm
(Link)
>свой набор рантаймово-полиморфных генериков использую

А поделиться?
[User Picture]
From:[info]wasserstrahl
Date:April 2nd, 2021 - 04:28 pm
(Link)
Т.е. заворачивание инкремента в выражение в любом случае ведет себя неочевидно?

> Go to Top
LJ.Rossia.org