[C++/STL] Ввод-вывод контейнеров STL [closed]
а не проще создать файл 1.cpp, написать в нем 5-6 строчек и проверить это дело, чем сидеть и ждать пока ктонить другой теже 5-6 строчек напишет и ответит в форуме?
только это всё фигня, ни к чему сверхинтересному я не пришел.
а с чего ты решил что << >> уже орпределены? для каких потоков? что юзаешь?
Первый мой вопрос таков: верно ли, что для контейнера set определены операции istream::operator >> и ostream::operator <<, чтобы можно было просто писать
(При условии, конечно, что операции сдвига для MyClass корректно определены.)
set<MyClass> set;
cin >> set;
...
cout << set;
Это нужно вместо стандартного способа
(На самом деле ввод и вывод будут перенаправляться в файлы, так что на экране никакого "бреда" не будет.)
for (cur = set.beg; cur != set.end; ++cur) cout << *cur;
И второй вопрос: если ввод и вывод для set уже реализованы в STL, то насколько оптимально? Действительно ли ввод множества целиком работает быстрее, чем поэлементное чтение и добавление (это работает медленно из-за балансировки дерева в set)? Если стандартная реализация тупо прокручивает контейнер и делает << для каждого элемента, то это можно и руками сделать для set.
Операторы-то определены, а вот класс свойств придется реализовывать ручками.
Блин, тебе уже написали, что уже можно было несколько раз самостоятельно проверить. Тем более, что в любом компиляторе есть исходники stl. Если тебя интересует производительность, то надо использовать boost. Или писать свои функции руками.
Блин, тебе уже написали, что уже можно было несколько раз самостоятельно проверитьтак и скажи: "не знаю". про исходники и без тебя мне известно.
так и скажи: "не знаю". про исходники и без тебя мне известно.Я всё знаю. Просто мне не понятно, на кой надо сидеть 3 часа и ждать ответа на форуме, если тебе всё известно про исходники.
![](/images/graemlins/grin.gif)
Никак не работают, если ты сам их не определишь.
неахота лезть в исходники. в форум глянуть прощчепусть за меня другие все делают, а мне неохота
банить таких нада...
Просто не отвечай, и они постепенно вымрут.
![](/images/graemlins/grin.gif)
Форум хорош для быстрых лёгких вопросов, чтоб за всякой фигней в мануал не лезть. Ответов на трудные вопросы тут всё равно не получишь, ибо большинству влом думать над чужими задачами. Оно и понятно, врмя-то не резиновое.
Продолжай в том же стиле, и на твои вопросы, кроме таких же "вали-нахов", никто отвечать не будет.
Что-то никак не могу найти. Поконкретнее напиши.
template<class _Elem, class _Traits> inline
basic_ostream<_Elem, _Traits>& __cdecl operator<<(
basic_ostream<_Elem, _Traits>& _Ostr, _Elem _Ch)
есть вопросы которые наизусть назубок никто не знает, потому что когда это надо каждый смотрит rtfm, тупо по нему делает и тут же про это забывает
спрашивать такие вопросы в форуме - просто кощунство
![](/images/graemlins/smirk.gif)
Оставить комментарий
Missi4ka
Напомните, плиз, операции << и >> для контейнеров в STL как работают: они сохраняют и восстанавливают весь контейнер целиком, представляя его в некотором своём формате, или последовательно вызывают << или >> для каждого элемента, требуя, чтобы эта операция была определена?Мне нужно записать (а потом прочитать) на диск множество некоторых объектов. При этом желательно, чтобы запись и чтение производились с помощью оператров сдвига, переопределенных для моего класса. Обходить всё множество не хочется, так как операция инкремента итератора на ассоциативных контейнерах работает медленно.
К тому же, при чтении элементов из файла во множество будет происходить потеря времени на балансировку дерева, которым представляется множество. Ее можно избежать, если сохранять в правильном порядке. Делает ли это класс set автоматически?