0
我想设置lower_bound和upper_bound以便多重结构遍历一个范围。如何正确设置字符串?在stl集中设置lower_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;
}
我该如何设置低指向字符串测试以“ab”开头的元素?
我想:
itLow = fooset.lower_bound("string");
我知道这是不够的......但我不知道该怎么做。
谢谢!
及其'foo'一个构造函数,可以让你通过在一个字符串中,它被用来初始化'test'。 – 2012-03-22 18:30:10
当我尝试对此进行测试时,我得到了最后一行的“从这里实例化”的错误。 另外...当我将'lower_bound'更改为'upper_bound'时,我无法解决错误。有任何想法吗?谢谢! – 2012-03-22 18:39:36
@JayKim:糟糕 - 当您指定比较函数而不是使用'operator <'时,您还必须将它传递给'lower_bound',就像'std :: multiset :: iterator it = std :: lower_bound(fooset .begin(),fooset.end(),foo(“string”),comp());' –
2012-03-22 22:50:51