Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++; 我使用C++中的一组对象来获取插入和查找的日志(n)次。 在下面的代码中,我能够插入元素并使它们按x属性排序,但是,我不能使用lower_bound来查找基于同一属性的下限。我不知道如何解决这个问题。任何帮助都将不胜感激_C++_Algorithm_Set - Fatal编程技术网

在C++; 我使用C++中的一组对象来获取插入和查找的日志(n)次。 在下面的代码中,我能够插入元素并使它们按x属性排序,但是,我不能使用lower_bound来查找基于同一属性的下限。我不知道如何解决这个问题。任何帮助都将不胜感激

在C++; 我使用C++中的一组对象来获取插入和查找的日志(n)次。 在下面的代码中,我能够插入元素并使它们按x属性排序,但是,我不能使用lower_bound来查找基于同一属性的下限。我不知道如何解决这个问题。任何帮助都将不胜感激,c++,algorithm,set,C++,Algorithm,Set,我能找到的关于集合的大多数例子都不是关于一组对象的 struct MyObject { float x = 0; float y = 0; const bool operator < ( const MyObject &r ) const{ return ( x< r.x); } }; set<MyObject> nset; int main(){ MyObject n1; n1.x=5; n1.y=1; MyObject n2; n2.x

我能找到的关于集合的大多数例子都不是关于一组对象的

struct MyObject {
float x = 0;
float y = 0;    
const bool operator < ( const MyObject &r ) const{
    return ( x< r.x);
}
};

set<MyObject> nset;

int main(){

MyObject n1;
n1.x=5;
n1.y=1;

MyObject n2;
n2.x=3;
n2.y=2;

nset.insert(n1);
nset.insert(n2);

// this works, the elementes are sorted according to x
for(auto elem: nset){
    cout << elem.x << endl; 
}

// this doesn't work
set<MyObject>::iterator it = lower_bound(nset.begin(), nset.end(), 1.2);
cout << it->x << endl;

//neither this one
//    set<MyObject>::iterator it = nset.lower_bound(1.2);
//    cout << it->x << endl;

cout << "hello" << endl;
return 0;
}
struct MyObject{
浮动x=0;
浮动y=0;
常量布尔运算符<(常量MyObject&r)常量{
回报率(xcout
nset
存储
MyObject
对象,并且
下限
需要存储在集合中的一个对象。您正在传递它
1.2
,它是一个双精度,但是无法从双精度构造
MyObject
。因此编译失败


您需要将
MyObject
传递给
nset。下限
进行搜索。

nset
存储
MyObject
对象,
下限
需要一个存储在集合中的对象。您正在传递它
1.2
,这是一个双精度,但无法从中构造
MyObject
因此编译失败


您需要将
MyObject
传递到
nset.lower\u bound
进行搜索。

如果您遇到编译器错误,请发布这些错误。也就是说
std::set
实现了自己的
lower\u bound
函数,您应该使用它,而不是
std::lower\u bound
,我现在已经编辑过,以包含compiler errors如果您遇到编译器错误,请发布这些错误。也就是说,
std::set
实现了自己的
lower_bound
函数,您应该使用它,而不是
std::lower_bound
我现在编辑了编译器错误扫描,请详细说明如何传递MyObject?因为这并没有ork:set::迭代器it=nset.lower_-bound(MyObject(1.2));@user3134575您需要像对要添加到集合中的对象那样构造
MyObject
。我想现在我明白您的意思了。我只需要构造另一个对象,如n3,并且n3.x=1.2,然后将其传递给函数。谢谢,这确实有效。您能详细说明一下如何传递MyObject吗?因为这样做了不工作:set::iterator it=nset.lower_-bound(MyObject(1.2))@user3134575您需要构造
MyObject
,就像您为添加到集合中的对象所做的那样。我想现在我明白了您的意思。我只需要构造另一个像n3这样的对象,并且具有n3.x=1.2,然后将其传递给函数。谢谢,这确实有效。
set<MyObject>::iterator mylower_bound(set<MyObject> &myset, float val){    
    MyObject f;
    f.x = val;
    set<MyObject>::iterator it = myset.lower_bound(f);   
    return it;
}