我想为多个结构集设置lower_bound和upper_bound来迭代一个范围。如何为字符串正确设置?
#include ...
...
struct foo{
int bar;
string test;
};
struct comp{
inline bool operator()(const foo& left,const foo& right){
return strcasecmp(left.test.c_str(), right.test.c_str());
}
};
int main(){
std::multiset<foo,comp> fooset;
std::multiset<foo,comp>::iterator it, itLow;
...//insert into fooset
//how do set lower_bound to element where string is "aab" or whatever?
return 0;
}
如何设置itLow指向带有&#34; ab&#34;?
的字符串测试的元素我试过了:
itLow = fooset.lower_bound("string");
我知道这还不够......但我不确定该怎么做。
谢谢!
答案 0 :(得分:1)
您需要从字符串构建foo
,然后使用lower_bound
(或upper_bound
,视情况而定)搜索位置:
struct foo {
int bar;
string test;
foo(string i) : test(i) {}
};
std::multiset<foo, comp> fooset;
std:multiset<foo,comp>::iterator it =
std::lower_bound(fooset.begin(), fooset.end(), foo("string"), comp());