您的位置:程序门 -> c/c++ -> c++ 语言



stl list查找问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


stl list查找问题
发表于:2008-01-21 18:03:54 楼主
我有个list的结构体:

typedef   struct   proxy_queue
{
char   ip[16];
int     port;
time_t   tv;
int   qnum;

bool   operator <(proxy_queue   const&_a)const
{
if(tv <_a.tv)return   true;
}
}proxyqueue;

list <proxyqueue>     proxylist;

我怎样能根据其中的ip和port找到这个节点啊
发表于:2008-01-21 18:33:301楼 得分:0
呵呵,楼主不是写了一些了吗
加个find算法进行查找,ms就没大问题了
发表于:2008-01-21 19:57:342楼 得分:0
find加不了啊,说proxylist没有find,而且,我需要根据两个字段查找啊
发表于:2008-01-21 22:25:333楼 得分:0
c/c++ code
//用find_if试一下吧: // find_if example #include <iostream> #include <algorithm> #include <vector> using namespace std; bool isodd (int i) { return ((i%2)==1); } int main () { vector<int> myvector; vector<int>::iterator it; myvector.push_back(10); myvector.push_back(25); myvector.push_back(40); myvector.push_back(55); it = find_if (myvector.begin(), myvector.end(), isodd); cout << "the first odd value is " << *it << endl; return 0; }
发表于:2008-01-21 22:43:364楼 得分:0
c/c++ code
class equal : public binary_function<proxyqueue, proxyqueue, bool> { public : bool operator()(const proxyqueue& _left, const proxyqueue& _right) const { if (strcmp(_left.ip, _right.ip)) return false; if (_left.port != _right.port) return false; return true; } }; int _tmain(int argc, _tchar* argv[]) { list <proxyqueue> proxylist; // do push back proxyqueue p; // init p std::find_if(proxylist.begin(), proxylist.end(), std::bind2nd(equal(), p)); return 0; }
发表于:2008-01-21 23:02:555楼 得分:0
#include <iostream>
#include <list>
#include <cstring>  
using   namespace   std;
typedef       struct       proxy_queue
{
char       ip[16];
int           port;
time_t       tv;
int       qnum;

bool       operator   <(proxy_queue       const&_a)const
{
if(tv   <_a.tv)return       true;
}
}proxyqueue;

list   <proxyqueue>           proxylist;  

bool   iscur(proxyqueue   &pq)
{
          return   !strcmp("127.0.0.1",pq.ip)&&pq.port==23;
}

int   main()
{
        proxyqueue   pq;
        for(int   i=0;i!=10;++i){
                strcpy(pq.ip,"127.0.0.1");
              pq.port=21+i;
              proxylist.push_back(pq);
        }

    //查找ip为127.0.0.1,端口为23的结点
        list <proxyqueue> ::iterator   iter=find_if(proxylist.begin(),proxylist.end(),iscur);
        cout < <iter-> ip < <"   " < <iter-> port < <endl;
        system("pause");
        return   0;
}

你试一下。。。
发表于:2008-01-22 23:04:206楼 得分:0
顶~~来晚了


快速检索

最新资讯
热门点击