gibt es eine möglichkeit, einen vector oder eine map mit einer ausgewählten anzahl an indizes zw keys zu initialisieren?
-
Hallo,
Ich würde gerne einen vector mit N Feldern initialisieren und eine map mit einem keyset 1...N und dann halt ein wert dazu. Geht das?
-
Ich versuche es hiermit aber das wirft den Fehler: expression must have class type but it has type "std::__1::map<int, std::__1::vector<int, std::__1::allocator<int>>, std::__1::less<int>, std::__1::allocator<std::__1::pair<const int, std::__1::vector<int, std::__1::allocator<int>>>>> (*)()"
int N, edge_A, edge_B; cin >> N; map<int,vector<int>> graph(); for (int i = 1; i <= N; i++){ graph.insert({i,vector<int>(0)}); }
-
@fairy2211 anscheinend wird das graph objekt gar nicht in der for schleife gefunden
-
@fairy2211 Versuch es mal so:
map<int,vector<int>> graph;
-
@fairy2211 sagte in gibt es eine möglichkeit, einen vector oder eine map mit einer ausgewählten anzahl an indizes zw keys zu initialisieren?:
expression must have class type but it has type "std::__1::map<int, std::__1::vector<int, std::__1::allocator<int>>, std::__1::less<int>, std::__1::allocator<std::__1::pair<const int, std::__1::vector<int, std::__1::allocator<int>>>>> (*)()
Das ist eine etwas umständliche Art des Compilers zu sagen: "Ich erwarte eine Klasse, aber der Ausdruck hat den Typ 'Zeiger auf eine Funktion ohne Parameter, die
map<int,vector<int>>
zurückgibt'."Siehe dazu: Most vexing parse
Lösung: Klammern hinter
graph
-Deklaration weglassen (einfachmap<int,vector<int>> graph;
) oder Uniform Initialization verwenden (map<int,vector<int>> graph{};
).