は、だから私は、たとえば、値のマップを持っている:私の現在のコードでマップ内の特定の範囲の値を格納する
1 3 5 7 9
、私は現在、一定の範囲の間の出現数を見つけることができますよ[低、高]の。
// 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;
}
私の質問です:私はこの例では3つのオブジェクトを取得するにはどうすればよい私が持っていた場合たとえば、[3]、[7]私は値3
が私の現在のコードは次のようになり得るでしょう低いと高いの間に存在する?これらの3つのオブジェクトを「結果」デュークに格納して、その範囲内で3つのオブジェクトが見つかりました。私は私の構造体の3つのオブジェクトを押したいと思うが、私は構文を理解するのに苦労している。すべてのヒントや助けをいただければ幸いです!
編集:新しいメソッドを使用しようと
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;
}
編集:PICバージョンhttps://gyazo.com/4960e067252f23ffafb924fa8e6693eb
ありがとうございました。コード例を読んだとき、私は少し怠惰でした。 – paddy
こんにちは、私はまだ@ 1201ProgramAlarmのメソッドを使用して少し問題があります。私はあなたがまだ助けることができるかどうか疑問に思っていた。この関数は理にかなっていて、私はSTLでそれを調べました。しかし、Xcodeはまだそれをコンパイルすることを拒否しています。私はメインポストの編集でそれを投げた。それがまだ失敗する理由を知っていますか? – MMM
私はそれを得た!両方ともありがとう! – MMM