我有以下代码:
wxString getColorName(const wxColour& color)
{
typedef ColorComboBox::ColorMap::right_const_iterator ConstColorIterator;
ColorComboBox::ColorMap colorMap = ColorComboBox::getDefaultChoices();
ConstColorIterator it = colorMap.right.find(color);
return it != colorMap.right.end() ? it->second :
ColorComboBox::CUSTOM_COLOR;
}
定义 ColorMap 的地方
typedef boost::bimaps::bimap \
<wxString, boost::bimaps::vector_of<wxColour> > \
ColorMap;
我不断收到一个很长的模板错误,基本上说 find 函数不存在。然而
ColorMap::left_const_iterator it = choices_.left.find(GetValue());
编译得很好。
我有一种预感,find 函数只在某些 bimap 集合类型中定义。我不能使用 wxColours 的 set_of,因为 wxColour 不可比较。(这甚至意味着什么?)我还尝试将集合类型更改为 list_of,但这也不起作用。我使用 bimap 的全部目的是为了让我可以找到任何一种方式的值。我使用了错误的容器吗?是否有另一种可以用于 wxColour 的集合类型来允许我使用 find 功能?
编辑: 我最终创建了自己的容器类。