HashSet作为其他HashSet的键(HashSet as key for other HashSet)
我试图使用
HashSet<String>
作为其他HashSet
的键。 我发现这个问题和答案指出为HashSet<String>
实现Hash
特征,但我不能让我的具体案例工作。幸运的是我的情况更加严格,所以我需要的是:
- 仅为
HashSet<String>
类型实现hash
特征- 哈希现在应该非常简单:
集合
{"q3", "q1", "q2"}
应该作为一个简单的有序,连接的字符串版本进行hash("q1-q2-q3")
,类似hash("q1-q2-q3")
。 获取"q1-q2-q3"
不是问题,但在hash
使用它会抛出我无法处理的所有类型的错误。这是我的实施尝试,但它不起作用。 我认为
StateSet
包装器不是正确的方法,因为我丢失了所有重要的HashSet
方法use std::collections::{HashMap,HashSet}; use std::hash::{Hash,Hasher}; type State = String; struct StateSet(HashSet<State>); impl PartialEq for StateSet { fn eq(&self, other: &StateSet) -> bool { self.is_subset(&other) && other.is_subset(&self) } } impl Eq for StateSet {} impl Hash for StateSet { fn hash<H>(&self, state: &mut H) where H: Hasher { let a: Vec<State> = self.iter().collect(); a.sort(); for s in a.iter() { s.hash(state); } } } fn main() { let hmap: HashSet<StateSet> = HashSet::new(); }
( 游乐场 )
Im trying to use a
HashSet<String>
as a key for otherHashSet
. I have found this question and answer that points out to implement theHash
trait forHashSet<String>
, but I couldn't make my specific case to work.My case is luckily more bound so what I need is:
- Implement the
hash
trait only for the typeHashSet<String>
- The hashing should be very simple for now:
The set
{"q3", "q1", "q2"}
should be hashed as a simple ordered, joined string version of it, something likehash("q1-q2-q3")
. Obtaining"q1-q2-q3"
is not a problem but using it inside ahash
throws all sort of errors I could not deal with.This is my attempt of implementation, but it doesn't work. I think that the
StateSet
wrapper is not the right way of doing it, because I lose all the importantHashSet
methodsuse std::collections::{HashMap,HashSet}; use std::hash::{Hash,Hasher}; type State = String; struct StateSet(HashSet<State>); impl PartialEq for StateSet { fn eq(&self, other: &StateSet) -> bool { self.is_subset(&other) && other.is_subset(&self) } } impl Eq for StateSet {} impl Hash for StateSet { fn hash<H>(&self, state: &mut H) where H: Hasher { let a: Vec<State> = self.iter().collect(); a.sort(); for s in a.iter() { s.hash(state); } } } fn main() { let hmap: HashSet<StateSet> = HashSet::new(); }
原文:https://stackoverflow.com/questions/36562419
最满意答案
您将要监控与您的圈子对应的区域。
创建您的
CLRegion
:
- (id)initCircularRegionWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius identifier:(NSString *)identifier
使用
CLLocationManager
监视:
- (void)startMonitoringForRegion:(CLRegion *)region
哪个会将事件发送给您的侦听器,因此您可以在收到事件时添加/删除叠加层:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
可能最简单的方法是存储
MKCircle
对象与相应CLRegion
对象之间的关系,这样您就可以适当地更新地图。You are going to want to monitor the regions corresponding to your circles.
Create your
CLRegion
:
- (id)initCircularRegionWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius identifier:(NSString *)identifier
Monitor with
CLLocationManager
:
- (void)startMonitoringForRegion:(CLRegion *)region
Which will send events to your listener, so you can add/remove the overlays when you receive the events:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
Probably the easiest way for you will be to store the relationship between
MKCircle
objects and the correspondingCLRegion
objects, so you can update your map appropriately.
相关问答
更多-
请确保[CLLocationManager regionMonitoringAvailable]返回YES , CLLocationManager.monitoredRegions包含有效区域。 另外,从Apple文档: 在iOS 6中,半径在1到400米之间的区域在iPhone 4S或更高版本的设备上运行得更好。 (在iOS 5中,半径在1到150米之间的区域在iPhone 4S和更高版本的设备上运行得更好。)在这些设备上,应用程序可以在3到5分钟内平均接收输入的适当区域或区域退出通知,如果不是更快。 和 ...
-
如何在使用Dojox / Standby时从叠加层中删除透明度?(How to remove transparency from the overlay when using Dojox/Standby?)[2022-04-16]
查看dojo/widget/Standby 源代码 v1.8。 有一个不透明度选项。 默认值为0.75。 此属性不会影响加载图像。 用法: require(["dojox/widget/Standby"], function (Standby) { var standby = new Standby({ target: 'targetDiv', color: '#333', opacity: 1 //change opacity to 1 ... -
你在这里缺少else条件: google.maps.event.addListener(marker, 'click', function() { if (overlay) { removeDonut(); } else { //<-- no else and showDonut was being called again after remove showDonut(map, marker.position.lat(), marker.position.lng()); } } ...
-
您将要监控与您的圈子对应的区域。 创建您的CLRegion : - (id)initCircularRegionWithCenter:(CLLocationCoordinate2D)center radius:(CLLocationDistance)radius identifier:(NSString *)identifier 使用CLLocationManager监视: - (void)startMonitoringForRegion:(CLRegion *)region 哪个会将事件发送给您的侦听器, ...
-
这将工作 NSArray *pointsArray = [mapView overlays]; [mapView removeOverlays:pointsArray]; This will work NSArray *pointsArray = [mapView overlays]; [mapView removeOverlays:pointsArray];
-
将data-role =“none”添加到输入:
相关文章
更多- 怎么理解Set集合中的HashSet中的元素是无序的?
- Memcached get 获取key对应的值
- Memcached delete 删除key
- Memcached replace 替换已存在的 key命令
- Memcached append 向 key(键) 对应 value(数据值) 后面追加数据
- 如何取得Map当中的key
- Memcached add 添加key-value命令(存在不会更新)
- Memcached prepend 向key对应值前面追加数据
- Memcached flush_all 命令清理缓存中的所有 key
- hibernate值类型集合映射-一个顾客多个地址
最新问答
更多- 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
- 如何通过引用返回对象?(How is returning an object by reference possible?)
- 矩阵如何存储在内存中?(How are matrices stored in memory?)
- 每个请求的Java新会话?(Java New Session For Each Request?)
- css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
- 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
- xcode语法颜色编码解释?(xcode syntax color coding explained?)
- 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
- 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
- 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
- 西安哪有PLC可控制编程的培训
- 在Entity Framework中选择基类(Select base class in Entity Framework)
- 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
- 电脑二级VF有什么用
- Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
- 金华英语角.
- 手机软件如何制作
- 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
- 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
- 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
- Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
- 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
- python的访问器方法有哪些
- DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
- 在Ruby中对组合进行排序(Sorting a combination in Ruby)
- 网站开发的流程?
- 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
- 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
- 透明度错误IE11(Transparency bug IE11)
- linux的基本操作命令。。。