我的列表中有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*
的正确方法是什么?
答案 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;
}
以上代码可能会对您有所帮助。 我刚写了一段粗略的代码,请尽量优化。
欢迎评论......