Можно ли инициализировать набор путем прямого копирования?
Из cppreference :
Создает новый контейнер из множества данныхисточники и опционально, используя предоставленный пользователем распределитель alloc или объект функции сравнения comp.
...
3) Конструктор копирования.Создает контейнер с копией содержимого other. Если alloc не предоставлен, allocator получается путем вызова std :: allocator_traits :: select_on_container_copy_construction (other.get_allocator ()).
...
Проблема в вашем коде: вы определяете вектор без каких-либо элементов внутри него и пытаетесь изменить элемент на месте 0.
Два решения:
// Solution 1
std::vector<std::set<int>> m(1); // Define vector with one element
// Solution 2
std::vector<std::set<int>> m;
m.push_back(std::set<int>()); // Add new element to the vector with push_back
m.emplace_back(); // Add new element to the vector with emplace_back (recommended)
РЕДАКТИРОВАТЬ:
для последней строки изменить <
с !=
:
for(std::set<int>::iterator iter = n.begin(); iter != n.end(); iter++)