gpt4 book ai didi

C++:将结构插入集合时出错

转载 作者:太空狗 更新时间:2023-10-29 20:39:58 24 4
gpt4 key购买 nike

我正在尝试插入 struct进入 set在 ITK 类中。

该结构在 class 中定义如下:

struct PixType {

IndexType Index;
PixelType Value;

bool operator <(const PixType&rhs) {
return (double)Value < (double)rhs.Value;
}

};

在哪里IndexTypePixelType是图像中像素的索引和值:

typedef typename TImage::IndexType              IndexType;
typedef typename TImage::PixelType PixelType;

但是,当我创建我的集合并尝试插入一个元素时...

// Create set
std::set< PixType > MySet;

// Create something to insert into set
PixType LeftPixel;
LeftPixel.Index = qualIt.GetIndex( left );
LeftPixel.Value = qualIt.GetPixel( left );

// Try to insert into set
MySet.insert( LeftPixel ); // error: invalid operands to binary expression

...我得到一个 invalid operands to binary expression错误。我也试过inline正在 <函数在结构外,但随后我得到一个错误,指出函数不能在此处定义(在类的方法内)。

如果它有帮助,这里是我正在尝试做的事情的大图。我想在图像中存储一个像素列表(包括它们的索引和它们的值)。我希望能够快速找到具有最小值的像素,并检索该像素的索引。经过一些阅读,似乎包含一个包含索引和值并且可以根据值进行比较的结构的集合将是最有效的选择。我之前通过维护 vector 获得了我需要的功能索引和值的 s,并使用 findmin_element ,但由于 vector 变得太大,我遇到了效率问题。

最佳答案

运算符需要是常量,以便它可以应用于集合的常量元素:

bool operator <(const PixType&rhs) const
^^^^^

或者,您可以将其实现为非成员:

bool operator <(const PixType&lhs, const PixType&rhs)

关于C++:将结构插入集合时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25920359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com