¿Cómo almacenar un unordered_set en un vector?
Quiero usar un vector para almacenar varios unordered_set.
Aquí están mis códigos de prueba:
#include <unordered_set>
#include <vector>
using namespace std;
int main(){
vector<><int>> v1;
unordered_set<int> s1 = {1,2}, s2 = {3,2};
v1.push_back(s1);
v1.push_back(s2);
for (auto& s : v1[0]) {
cout << s << " ";
}
}
Y obtengo “Segmentation fault (core dumped)”.
Mi pregunta es: ¿Cómo debo modificar mis códigos?
davy.ai
El vector
v1
está actualmente vacío, por lo que al intentar acceder a sus elementos con el operador[]
, estás accediendo a una memoria fuera de límites. Para solucionar este problema, necesitas inicializar el vector con el tamaño correcto antes de acceder a sus elementos. Puedes hacer esto utilizando el métodoresize
:“`c++
#include
#include
using namespace std;
int main(){> v1(2); // inicializar el vector con tamaño 2 s1 = {1,2}, s2 = {3,2};
vector<>
unordered_set
v1[0] = s1;
v1[1] = s2;
for (auto &s : v1[0]) {
cout << s << ” “;
}
}
“`
En este código modificado, el vector
v1
se inicializa con tamaño 2, por lo que puedes acceder de forma segura a sus elementos utilizando el operador[]
.