STL中的lower_bound,upper_bound怎么使用?

bristy 2007-08-28 02:51:34
如有一个结构体链是这样的:
struct A
{
int login ;
char si[128];
}
用multiset<A,sort>setA;
其中的排序是先以login排好,如果login相同,则以si排列。
现在想找到比如login==5的所有的struct,我想用lower_bound和upper_bound得到这个区间login==5的所有的结构体,应当怎么写代码啊????
...全文
3152 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
redex 2007-09-03
  • 打赏
  • 举报
回复
"memset(this,0,sizeof(*this));"

这句确实强, 在java中我曾写过类似的: this = null; 可以编译通不过!
taodm 2007-08-29
  • 打赏
  • 举报
回复
A abc ;
abc.login=3;
你si数据没初始化。
hoya5121 2007-08-29
  • 打赏
  • 举报
回复

multiset<CString> ss;
//abdefg
ss.insert(L"bbb");
ss.insert(L"ddd");
ss.insert(L"ggg");
ss.insert(L"fff");
ss.insert(L"eee");
ss.insert(L"aaa");

multiset<CString>::iterator iter = lower_bound(ss.begin(), ss.end(), L"ccc");

AfxMessageBox(*iter);


bristy 2007-08-29
  • 打赏
  • 举报
回复
呵呵,我只是看它是个结构体才这样写的。。原来这样不行的啊。。
taodm 2007-08-29
  • 打赏
  • 举报
回复
强人啊,vector<Lsymbol>sy;都敢用memset。
楼主,还是买本C++ Primer,好好补补基础吧。
在C++里,还是忘了memset/memcpy这种东西吧。
bristy 2007-08-29
  • 打赏
  • 举报
回复
我是这样写的:
struct Lsymbol
{
char symbol[128];
double buylots;
double selllots;
Lsymbol()
{
memset(this,0,sizeof(*this));
}
};
struct Laccount
{
int alogin;
double aprofit;
vector<Lsymbol>sy;
Laccount()
{
memset(this,0,sizeof(*this));
}
};
Laccount abc;
这样应当是全部初始化为0了吧
bristy 2007-08-28
  • 打赏
  • 举报
回复
还有个问题,我像这样做了后,比如结构体里的数是:按LOGIN来:3 3 3 4 5 5 7 7
现在我要得到3的所有login,结果用
A abc ;
abc.login=3;
A_low=setA.lower_bound(&abc);
A_high=setA.upper_bound(&abc);
结果得到的是两个都指向4。然后我把abc.login=4;
结果两个都指向5
不是说lower_bound返回的是“实值大于等于value的第一个元素”么?那应当反回的是第一个3和第一个4啊???
bristy 2007-08-28
  • 打赏
  • 举报
回复
下班时再给分哈,
bristy 2007-08-28
  • 打赏
  • 举报
回复
呵呵谢谢楼上大哥,不是太累,是刚学这个东西,太多不懂的了:)
taodm 2007-08-28
  • 打赏
  • 举报
回复
兄弟啊,你现在是太累了,已经迷糊状态了,稍微休息一下吧。
A abc = {5, ""};

A_low=setA.lower_bound(&abc);
bristy 2007-08-28
  • 打赏
  • 举报
回复
还是一样。。。
A abc;
A_low=setA.lower_bound abc(abc.login);
taodm 2007-08-28
  • 打赏
  • 举报
回复
你必须先构建一个A的基本对象,再取其地址。
bristy 2007-08-28
  • 打赏
  • 举报
回复
按你写的怎么不正确呀???我这样写的
其中i和A_low是setA的迭代器。
上面写错了一点,应当是这样的multiset<A*,sort>setA//这里set是个结构体指针
A_low=setA.lower_bound *A((*i)->login);
taodm 2007-08-28
  • 打赏
  • 举报
回复
lower_bound A(5, "")
upper_bound A(5, "127个\0xFF")

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧