Also ich eine Karte von Werten habe, zum Beispiel:Speicher von Werten aus einem bestimmten Bereich in einer Karte
1 3 5 7 9
Mit meinem aktuellen Code, ich bin derzeit in der Lage, die Anzahl der Vorkommen zwischen einem bestimmten Bereich zu finden von [niedrig, hoch]. Zum Beispiel, wenn ich hatte [3, 7] würde ich den Wert bekommen 3.
Meine aktuellen Code sieht wie folgt aus:
// map::lower_bound/upper_bound
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<long,deque<my_struct>> my_map;
deque<my_struct> results;
mymap[12345].push_back(some_obj);
mymap[23456].push_back(some_obj);
mymap[34567].push_back(some_obj);
mymap[45678].push_back(some_obj);
auto low = my_map.lower_bound (12345);
auto high = my_map.upper_bound (34567);
int num = 0;
for (auto it = low; it != high; ++it){
++num;
//how to insert into my results deque?
}
cout << num << " found\n"; //3found
return 0;
}
Meine Frage ist: Wie kann ich die drei Objekte in diesem Beispiel das gibt es zwischen niedrig und hoch? Ich möchte diese 3 Objekte in der "Ergebnisse" -Deque speichern, damit ich weiß, was ich in diesem bestimmten Bereich gefunden habe. Ich weiß, dass ich 3 Objekte von my-struct einfügen möchte, aber es fällt mir schwer, die Syntax herauszufinden. Irgendwelche Tipps oder Hilfe würden geschätzt werden !!
Edit: Der Versuch, die neue Methode
using namespace std;
struct my_struct{
string value;
};
int main()
{
map<long,deque<my_struct>> my_map;
deque<my_struct> results;
my_struct entrya;
entrya.value = "today is a great day";
my_struct entryb;
entryb.value = "today is an okay day";
my_struct entryc;
entryc.value = "today is a bad day";
my_map[12345].push_back(entrya);
my_map[23456].push_back(entryb);
my_map[34567].push_back(entryc);
auto low = my_map.lower_bound (12345);
auto high = my_map.upper_bound (34567);
int num = 0;
for (auto it = low; it != high; ++it){
++num;
results.insert(results.back(), it->second.begin(), it->second.end());
//how to insert into my results deque?
}
cout << num << " found\n"; //3found
cout << "testing results\n";
for (int i = 0; i < results.size(); i++){
cout << results[i].value << "\n";
}
return 0;
}
bearbeiten zu verwenden: https://gyazo.com/4960e067252f23ffafb924fa8e6693eb
Oh danke für die Korrektur. Ich war ein bisschen faul, als ich das Codebeispiel las. – paddy
Hallo Leute, ich habe immer noch ein paar Probleme mit @ 1201ProgramAlarms Methode. Ich habe mich gefragt, ob du noch helfen kannst. Die Funktion macht Sinn, ich habe es auf der STL nachgeschlagen. Dennoch verweigert Xcode immer noch die Kompilierung. Ich warf es in eine Bearbeitung auf dem Hauptpost. Weißt du, warum es immer noch scheitern würde? – MMM
vergiss ich habe es! Vielen Dank euch beiden! – MMM