如何检查对象数组是否具有引用的对象

时间:2016-09-17 17:35:17

标签: c++ arrays

对于我的学校项目,我想要建立一个银行系统。它承诺用户创建最多十个帐户对象,然后将它们插入到一个对象数组中。后来我需要引用该数组中的某个对象来生成使用引用对象的预测, 到目前为止这就是我所做的

            cout << "\nHow many accounts do you wish to crate: \n";
        cin >> accounts;
        for (int i = 0; i < accounts; i++)
        {
            cout << "\n>> Enter your details for your  Account: " << accCount << " <<" << endl;
            newAccounts[i] = EnterAccountDetails();
            if (newAccounts[i].accNo == 0)
            {
                for (int j = i; j < accounts; j++)
                {
                    newAccounts[j] = newAccounts[j + 1];
                    accounts-=1;
                }
                break;
            }
            accCount++;
        }

2 个答案:

答案 0 :(得分:1)

除了在cin >> accounts电话上输入&gt; 10之外,上面看起来还不错。 (你需要限制我可以输入的内容)。 大概是因为我们看不到你的EnterAccountDetails()函数,你最终得到的是一个对象数组。您可以通过本机索引号迭代此对象数组,并使用。符号,个别属性。

for(int i=0, i < accCount, ++i) {
   if (newAccounts[i].someProperty == someValue) {
      dostuff();
   }
}  

Customer EnterAccountDetails() {
    Customer BankAccount;
    cout << "\n>Enter Bank Account Number (4-digit):\n";
    cout << ">If you wish to stop creating new accounts press 0 .." << endl;
    cin >> BankAccount.accNo;
    if (BankAccount.accNo == 0) {
        BankAccount.accNo = NULL;
        return BankAccount;
     } else ...

答案 1 :(得分:1)

你可以使用std::find,这是一个能够做到这一点的功能!

如果您的对象未定义operator==,则可以将std::find_if替换为lambda。

// If you have operator== defined
auto element = std::find(std::begin(yourArray), std::end(yourArray), elementToFind);

if (element != std::end(yourArray)) {
    // Your elementToFind exist in the array!
    // You can access it with `*element`
}

使用std::find_if

// If don't have operator== defined
auto element = std::find_if(std::begin(yourArray), std::end(yourArray), [&](auto&& check){
    return elementToFind.someProperty == check.someProperty;
});

if (element != std::end(yourArray)) {
    // Your elementToFind exist in the array!
    // You can access it with `*element`
}

语法[](){ /* return ... */ }被称为lambda表达式,它类似于您发送给std::find_if函数的某种内联函数,因此它可以比较元素的相等性。

请注意,您必须包含以下标题:

#include <algorithm>

您可以在Algorithms library

查看有关算法库的更多信息