Ich bin neu in C++ und könnte hier etwas sehr Grundlegendes fehlt aber ich versuche, einen Vektor von Vektoren zu erstellenVerwendung von Vektoren von Vektoren in C++ & push_back()
#include <iostream>
#include <stack>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs)
{
vector<vector<string>> result;
map<string,vector<string>> myMap;
if(strs.size() == 0)
{
return result;
}
for(string s : strs)
{
string temp = s;
sort(temp.begin(),temp.end());
auto it = myMap.find(temp);
if(it != myMap.end())
{
it->second.push_back(s);
}
else
{
vector<string> newVector;
newVector.push_back(s);
myMap.insert(pair<string,vector<string>>(temp,newVector));
result.push_back(newVector);
}
}
cout<< myMap["abt"].size() <<endl;
return result;
}
};
int main(int argc, const char * argv[])
{
Solution mySolution;
vector<string> myStrings {"eat", "tea", "tan", "ate", "nat", "bat"};
auto result = mySolution.groupAnagrams(myStrings);
for(vector<string> v: result)
{
//cout << v.size() << endl;
for(string s: v)
{
cout << s << " ";
}
cout << endl;
}
return 0;
}
ich einen Ausgang erwarte die sieht aus wie dieses
[
["ate", "eat","tea"],
["nat","tan"],
["bat"]
]
wenn ich versuche, den Vektor der Vektoren in main() ich die ganze Größe der Vektoren als 1.
Gut erhalten zu drucken, wenn ich die Größen der Vektoren in der Karte drucken , die Größen lo ok ok für mich da. Was fehlt mir hier?
UPDATE -
es Feste mit unter Änderung
for(string s : strs)
{
string temp = s;
sort(temp.begin(),temp.end());
auto it = myMap.find(temp);
if(it != myMap.end())
{
it->second.push_back(s);
}
else
{
vector<string> newVector;
newVector.push_back(s);
myMap.insert(pair<string,vector<string>>(temp,newVector));
}
}
for(auto it: myMap)
{
result.push_back(it.second);
}
ich immer noch daran interessiert wäre, zu wissen, ob es einen Weg gibt, durch die Karte am Ende zu vermeiden, Looping und erreichen etwas, was ich anfangs gedacht machen?
Beachten Sie, dass 'for (string s: strs)' eine Kopie jeder Zeichenfolge in 'strs' erstellt. – kfsone
"... wenn es eine Möglichkeit gibt, das Durchlaufen der Karte am Ende zu vermeiden" - Ich möchte nicht in diese Richtung antworten, nur weil es leicht ist, falsch zu liegen (sehr falsch), wenn man in 'Vektor kommt &> Territorium. Selbst für meine eigenen Zwecke versuche ich, Containers mit Referenztypen zu umgehen, da es eine Quelle für schlechtes Speichermanagement ist, wenn Sie die Werte gleichzeitig erzeugen und sie nur an "äußere" Bereiche übergeben. Sie können auch Zeiger verwenden, und es sollte offensichtlich sein, warum das gefährlich ist. –