获取指向列表中元素的指针

时间:2015-12-22 10:14:55

标签: c++ list vector iterator

我的列表中有struct account

我想从我的函数返回类型为account*的指针。它是怎么做到的?

account* find_account(int ID){
    for (list<account>::iterator i = accounts_database.begin; i != accounts_database.end; i++ ){
        if (i->id==ID)
            return &(*(i));
    }
    else return NULL; 
}

这不起作用...... 知道从迭代器获取account*的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您忘记了()begin后面的end。同样使用C ++ 11风格,我会写这样的代码,看起来好多了。

account* find_account(int ID)
{
    for ( auto & elem : accounts_database )
        if ( elem.id == ID )
            return &elem;
    return nullptr;
}

答案 1 :(得分:0)

#include "stdafx.h"

#include<iostream>
#include<conio.h>
#include <list>
#include<iomanip>
using namespace std;


struct account
{
    int id;
    string name;
};
account* find_account(int);
account* find_account(int ID)
 {
    list<account*> accounts_database;
    account* a1,*a2;
    a1= new account();
    a2= new account();
    a1->id = 10;
    a1->name = "C++";
    a2->id = 30;
    a2->name = "Java";
    account* result_found= new account();
    accounts_database.push_back(a1);
    accounts_database.push_back(a2);
    list<account*>::const_iterator i;
    for(i = accounts_database.begin(); i != accounts_database.end(); ++i) 
    {
        if ((*i)->id==ID)
        {
            result_found = *i;
            break;
        }
        else
            result_found = NULL; 
    }
    return result_found;
}
int main( )
{
   account* a = find_account(30);
   return 0;
}

以上代码可能会对您有所帮助。 我刚写了一段粗略的代码,请尽量优化。

欢迎评论......