簡體   English   中英

在C ++中返回迭代器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM