我需要一种通过传入值可能具有的任何键来访问值的方法。 例如,可以通过其IP地址或名称访问的播放器对象?
举例说明。
Player2 has ["b", "3.4.5.6"]
Player3 has ["c", "2.2.9.3"]
players["b"]
因此,要访问Player2,我可以使用players["3.4.5.6"]
或std::multimap
我应该为此迭代一个向量吗?但我计划有大约100个元素,所以树状容器会比数组列表更好吗?
你可以使用std::map
吗?
甚至在where('total','=',count($tags)) to having('total','=',count($tags))
?
答案 0 :(得分:2)
确保ip
和name
是唯一的。
map<string, Player> byNameMap;
map<string, Player> byIpMap;
void add(Player p) {
byNameMap[p.name] = p;
byIpMap[p.ip] = p;
}
void remove(Player p) {
byNameMap.erase(byNameMap.find(p.name));
byIpMap.erase(byIpMap.find(p.ip));
}
// assuming you are sure player with such name exists
void removeByName(string name) {
remove(byNameMap[name]);
}
// assuming you are sure player with such ip exists
void removeByIp(string ip) {
remove(byIpMap[ip]);
}
答案 1 :(得分:1)
您可以使用下面示例中的boost.bimap
:
List<InstitutionUserConnection> result = institutionsOfUser.stream().
.map(institutionUserConnectionService::getActiveInstitutionUserConnectionsByInstitution)
.collect(Collector.of(ArrayList::new, List::addAll,
(left, right) -> { left.addAll(right); return left; }));
答案 2 :(得分:0)
假设你有一个播放器数组和2个指向起始点的指针数组,它们是char值和ip地址。 无论你使用什么搜索算法bjt包括searchin with和little if语句。例如: if(incoming_value_size == 1)//这是一个char值 然后 在set1array中搜索set 除此以外 Set2array
//如果你的球员排序,你可以找到一个你的邻居值,你用2个指针代表你。得到索引,你会没事的