«Handling map of files in c++» говорит «нет», следует использовать std::map<std::string, std::ofstream*>
, но это приводит к действиям new
и delete
, что не так просто.Можно ли обрабатывать std :: ofstream с std :: map?
С "Is std::ofstream movable? Да!" и возможно «std::map<>::insert using non-copyable objects and uniform initialization», можно ли обрабатывать коллекцию ofstream
с использованием std::map
? так что вы не будете беспокоиться о закрытии фильтров и delete
для освобождения памяти.
Я могу скомпрометировать, что при использовании std::map<std::string, std::ofstream>
создайте, используйте (чтобы написать) и закрыть, а не копировать.
"так что никто не будет беспокоиться о закрытии и потокового видео удалить, чтобы освободить память". Для этого нужны интеллектуальные указатели (если семантика перемещения не работает для вас, или вы хотите использовать полиморфные потоки). –
, но сам поток тоже делает это, правильно? если карта выходит за пределы области видимости, будет вызываться ее деструктор, который снова вызовет деструктор всех элементов, то есть из потока, тогда все файлы будут закрыты должным образом. – athos