S****z 发帖数: 666 | 1 自己定义的结构有两个东西,int ID, int scores
加元素的时候重新定义了它的 < 运算符,根据scores的值来排的
删除元素的函数希望只输入ID进行删除,
我死路是先查找到该ID,namely判断ID的值是否相等,进而进行删除,
但是貌似查找的时候我只给ID的值,scores的值随意的话,
set::find貌似不work啊,应该怎么着? |
S**I 发帖数: 15689 | 2 if you want to search by ID, you shouldn't overload the comparison operator
based on score; otherwise using set is meaningless.
【在 S****z 的大作中提到】 : 自己定义的结构有两个东西,int ID, int scores : 加元素的时候重新定义了它的 < 运算符,根据scores的值来排的 : 删除元素的函数希望只输入ID进行删除, : 我死路是先查找到该ID,namely判断ID的值是否相等,进而进行删除, : 但是貌似查找的时候我只给ID的值,scores的值随意的话, : set::find貌似不work啊,应该怎么着?
|
r*********r 发帖数: 3195 | |
P********e 发帖数: 2610 | 4 scores不能随意。因为你set的element就是pair
比如id=3, scores=4
你要s.find(pair<3,5>)当然不work了
【在 S****z 的大作中提到】 : 自己定义的结构有两个东西,int ID, int scores : 加元素的时候重新定义了它的 < 运算符,根据scores的值来排的 : 删除元素的函数希望只输入ID进行删除, : 我死路是先查找到该ID,namely判断ID的值是否相等,进而进行删除, : 但是貌似查找的时候我只给ID的值,scores的值随意的话, : set::find貌似不work啊,应该怎么着?
|
s*w 发帖数: 729 | 5 Google 了一下,这个问题没我想象的容易啊,大致是个 data view 的意思;好像有个
view
pattern 没明白啥意思;下面的是根据有人的建议的一个简单实现。主要麻烦是 set,
map 都不能
用 sort, 只能利用插入时候的缺省 sort
#include
#include
#include |
p***o 发帖数: 1252 | 6 要简单就用std::find_if,要想快就再建一个索引。
【在 S****z 的大作中提到】 : 自己定义的结构有两个东西,int ID, int scores : 加元素的时候重新定义了它的 < 运算符,根据scores的值来排的 : 删除元素的函数希望只输入ID进行删除, : 我死路是先查找到该ID,namely判断ID的值是否相等,进而进行删除, : 但是貌似查找的时候我只给ID的值,scores的值随意的话, : set::find貌似不work啊,应该怎么着?
|
S****z 发帖数: 666 | 7 想简单也想快,O(∩_∩)O哈哈~ 请教索引怎么建?
constraint只有一个:ID是唯一的,但是scores是可能同分的
原意是方便快速地把分数高的拿出来,
分数高不容易,得奖励一下嘛
然后我当时用SET是知道它可以跟scores排序
结果发现它不能根据ID删除,我郁闷了,
那人家只知道ID不知道分数还是可以得让人家删除吧
或者说人家重修了有个好的分数总该覆盖一下没及格的分数吧,sigh
【在 p***o 的大作中提到】 : 要简单就用std::find_if,要想快就再建一个索引。
|
s****a 发帖数: 238 | 8 +1
如果要比较score就写一个functor
【在 r*********r 的大作中提到】 : 用 map 不就行了。
|
s*w 发帖数: 729 | 9 你写一个看看
【在 s****a 的大作中提到】 : +1 : 如果要比较score就写一个functor
|