社区
工具平台和程序库
帖子详情
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
打赏
收藏
STL中的lower_bound,upper_bound怎么使用?
如有一个结构体链是这样的: struct A { int login ; char si[128]; } 用multisetsetA; 其中的排序是先以login排好,如果login相同,则以si排列。 现在想找到比如login==5的所有的struct,我想用lower_bound和upper_bound得到这个区间login==5的所有的结构体,应当怎么写代码啊????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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")
STL
容器之set的
使用
(含class对象),内含可运行代码和详细解释
代码包含set
使用
中
的size,insert,count,find,erase,swap,
lower
_
bound
,
upper
_
bound
,equal_range方法以及详细例子,并设立类和对象,可以看出set如何对对象进行排序和其他操作。
containers:我
使用
的容器的集合
jc ::
lower
_
bound
和jc ::
upper
_
bound
大约比其
STL
计数器部分快1.6倍-2.3倍。 基数排序是一种稳定的排序,需要相同长度的输出缓冲区。 这是约70行代码。 它比快12%-25% 快速而小型的C ++容器,用于存储动态数组...
c++
stl
之
lower
_
bound
,
upper
_
bound
和equal_range函数的详细介绍!!!
stl
常用函数
lower
_
bound
,
upper
_
bound
和equal_range函数初识注意事项具体
使用
说明equal_range函数
使用
注意事项高级用法
lower
_
bound
,
upper
_
bound
和equal_range函数初识
lower
_
bound
.(k) 返回一个迭代器,...
二分查找——妙用
STL
(
lower
_
bound
和
upper
_
bound
)
本文主要讲lowe_
bound
和
upper
_
bound
这两个底层皆基于二分查找,当然
STL
标准库
中
还有 equal_range() 和 binary_search() 也是基于二分查找实现的。读者可自行了解! C++
lower
_
bound
()函数 &...
【C/C++】
STL
之
lower
_
bound
&
upper
_
bound
lower
_
bound
和
upper
_
bound
是C++
STL
中
提供的非常实用的函数。其操作对象可以是vector、set以及map。
lower
_
bound
返回值一般是 >= 给定val的最小指针(iterator);
upper
_
bound
返回值则是 > 给定val的最小指针...
工具平台和程序库
24,855
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章