对于我的学校项目,我想要建立一个银行系统。它承诺用户创建最多十个帐户对象,然后将它们插入到一个对象数组中。后来我需要引用该数组中的某个对象来生成使用引用对象的预测, 到目前为止这就是我所做的
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++;
}
答案 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>
查看有关算法库的更多信息