由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 对STL的set比较熟悉的进来看看
相关主题
c++ interview: iterator 和 pointer区别?菜鸟求教,一个c++的困惑
stl iterator has "NULL" like const?C++ vector 一边遍历一边删
about STL functor and function pointersstl的一个问题
呼唤大侠们,我实在不能实现C++泛型的精神。用STL map的时候怎么自己定义大小比较的关系
stl container erase in a loop[合集] 大家看看我这个C++ STL Functor那里写错了
问几个关于hash, map, set的问题 (转载)请教一个boost::bind的问题
STL感觉实在太变态了容器里边放指针怎么办?
c++ template question:template 疑问
相关话题的讨论汇总
话题: int话题: namescore话题: scores话题: set话题: string
进入Programming版参与讨论
1 (共1页)
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
3
用 map 不就行了。
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
#include
using namespace std;
int main()
{
map namescore;
multimap scorename;
namescore["tom"] = 100;
namescore["mary"] = 90;
namescore["rose"] = 95;
namescore["peter"] = 60;
for (map::iterator
it=namescore.begin();it!=namescore.end();it++) {
cout << it->first << ": " << it->second << endl;
scorename.insert(make_pair(it->second,it->first));
}
for (multimap::iterator
it=scorename.begin();it!=scorename.end();it++)
cout << it->first << ": " << it->second << endl;
std::cin.get();
}

【在 r*********r 的大作中提到】
: 用 map 不就行了。
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

1 (共1页)
进入Programming版参与讨论
相关主题
template 疑问stl container erase in a loop
请推荐一本语言方面的C++书籍问几个关于hash, map, set的问题 (转载)
C++ template Questions (转载)STL感觉实在太变态了
紧急求助—寻C++ tutorc++ template question:
c++ interview: iterator 和 pointer区别?菜鸟求教,一个c++的困惑
stl iterator has "NULL" like const?C++ vector 一边遍历一边删
about STL functor and function pointersstl的一个问题
呼唤大侠们,我实在不能实现C++泛型的精神。用STL map的时候怎么自己定义大小比较的关系
相关话题的讨论汇总
话题: int话题: namescore话题: scores话题: set话题: string