部分简略代码如下:
class RevFaxTask
{
public:
RevFaxTask(void);
virtual ~RevFaxTask(void);
public:
std::string m_RevDateTime;
};
class CoreUserBox
{
public:
std::list < RevFaxTask * > m_list;
};
std::list<RevFaxTask *>::iterator pos1;
std::list<RevFaxTask *>::iterator pos2;
CoreUserBox testList;
pos1 = lower_bound(testList.m_list.begin(), testList.m_list.end(),........);
这后面的省略部分应该怎么写了?我需要比较的是一个日期时间,即将m_List里的Revdatetime和“2008-12-14 14:00:00”比,要找出大于2008-12-14 14:00:00的第一个元素位置。不知道是否可以用带4个参数的lower_bound的版本实现这个功能。。。
find_if的方法我用过了,我就想知道这个lower_bound这个用法,我是排序好的链表
6 个解决方案
#1
没有这个东西吧。
4个参数的是多带了一个判断式。当作排序用的。
4个参数的是多带了一个判断式。当作排序用的。
#2
我就是想用带判断式的这种,不知道应该怎么写这个判断式,我看C++ 标准程序库上是说这个判断式是个2元的
#3
参照一下这个
template<class _Ty>
struct less_equal
: public binary_function<_Ty, _Ty, bool>
{ // functor for operator<=
bool operator()(const _Ty& _Left, const _Ty& _Right) const
{ // apply operator<= to operands
return (_Left <= _Right);
}
};
#4
class RevFaxTask
{
public:
RevFaxTask(string str=""):m_RevDateTime(str){};
virtual ~RevFaxTask(void);
public:
std::string m_RevDateTime;
};
……
RevFaxTask *SearchRev=new RevFaxTask("2008-12-14 14:00:00");
pos1=testList.m_list.lower_bount(SearchRev);
可以吗
#5
#include "iostream"
#include "list"
#include "algorithm"
using namespace std;
struct compare
{
bool operator()(int* a, int* b)
{
return (*a) < (*b);
}
};
int main()
{
list<int*> listInts;
for (int i = 0; i < 10; ++i)
listInts.push_back(new int(i * 2));
int n = 5;
list<int*>::iterator iup = lower_bound(listInts.begin(), listInts.end(), &n, compare());
if (iup != listInts.end())
cout<<(**iup)<<endl;
return 0;
}
#6
呵呵,看这个列子启发了我,lower_bound的第3个参数类型必须和第4个函数的传入参数类型一致才可以比较。。解决了问题,谢谢!
#1
没有这个东西吧。
4个参数的是多带了一个判断式。当作排序用的。
4个参数的是多带了一个判断式。当作排序用的。
#2
我就是想用带判断式的这种,不知道应该怎么写这个判断式,我看C++ 标准程序库上是说这个判断式是个2元的
#3
参照一下这个
template<class _Ty>
struct less_equal
: public binary_function<_Ty, _Ty, bool>
{ // functor for operator<=
bool operator()(const _Ty& _Left, const _Ty& _Right) const
{ // apply operator<= to operands
return (_Left <= _Right);
}
};
#4
class RevFaxTask
{
public:
RevFaxTask(string str=""):m_RevDateTime(str){};
virtual ~RevFaxTask(void);
public:
std::string m_RevDateTime;
};
……
RevFaxTask *SearchRev=new RevFaxTask("2008-12-14 14:00:00");
pos1=testList.m_list.lower_bount(SearchRev);
可以吗
#5
#include "iostream"
#include "list"
#include "algorithm"
using namespace std;
struct compare
{
bool operator()(int* a, int* b)
{
return (*a) < (*b);
}
};
int main()
{
list<int*> listInts;
for (int i = 0; i < 10; ++i)
listInts.push_back(new int(i * 2));
int n = 5;
list<int*>::iterator iup = lower_bound(listInts.begin(), listInts.end(), &n, compare());
if (iup != listInts.end())
cout<<(**iup)<<endl;
return 0;
}
#6
呵呵,看这个列子启发了我,lower_bound的第3个参数类型必须和第4个函数的传入参数类型一致才可以比较。。解决了问题,谢谢!