[英]returning of the iterator in C++
有人可以解釋我可以返回列表迭代器嗎?
list<Account>::iterator Company::findAccount(int id){
for(list<Account>::iterator i = listOfAccounts.begin(); i != listOfAccounts.end(); ++i){
if(i->getID() == id){
return i;
}
}
return 0;
}
返回列表迭代器也是一種好習慣嗎?
也可以在語句中使用此功能:
if(findAccount(id)){
throw "hey";
return;
}
在您的情況下,返回迭代器會暴露類的內部,這幾乎總是一件壞事。 就像@Paul在回答中所說的那樣,一些STL算法返回迭代器。 但是,它們在輸入集合上返回迭代器。 從您的方法名稱來看,我猜這將是最好的返回對象或const引用的方法。
關於您的編輯,您可能需要研究Null Object Pattern 。 或者,您可以提供方法DoesAccountExist
。 如果對該方法的調用返回true
,則對findAccount
的調用必須成功,否則可能引發異常。
從算法<algorithm>
頭, find
例如,返回迭代器,所以它的確定。 但是,如果需要指示錯誤,則應返回迭代器,例如listOfAccounts.end()
而不是0。
是的你可以。 是的。 但是,如果要返回一個無效的迭代器(例如,在本示例中,當未找到任何元素時),則不應返回0,而應返回listOfAccounts.end()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.