Использование cin с вектором и классом
Каковы наилучшие способы использования cin с классом, использующим функцию vector.push_back?
Я знаю, что если это нормальный вектор, то я могу сделать это так, а затем использовать сторожевой код, чтобы подсказать конец
int myint; vector<int> y; cout << "vector integer" << endl; while ((cin >> myint) && myint != 9999) y.push_back(myint); for (int i = 0; i < y.size(); i++) cout << "y = " << y[i] << endl;*
Вот мой код:
#include <iostream> #include <fstream> #include <vector> using namespace std; class Account{ protected: int accno; double balance; public: Account(int accno, double balance) : accno(accno), balance(balance){}; double getBalance() {return balance;} void setBalance(double balance){ this->balance=balance; } int getAccno() {return accno;} void setAccno(int accno){ this->accno=accno; } void deposit(double amount){ balance = balance + amount; } }; class Saving : public Account{ public: Saving () : Account(accno,balance){}; Saving (int accno, double balance) : Account(accno,balance){}; bool withdraw (double amount){ if (balance < amount){ cout << "Insufficient funds"; return false; } else{ balance = balance - amount; return true; } } void compute_interest(){ balance = balance * 1.05; } void print(){ cout << "ID: " << accno << " balance: " << balance << endl; } friend istream& operator >>(istream& input, Saving& account){ cout << "ID: "; input >> account.accno; cout << "balance: "; input >> account.balance; return input; } friend ostream& operator <<(ostream& output, const Saving& account){ output << "ID: " << account.accno << " balance: " << account.balance << endl; } //friend bool operator !=(Saving a, int b) }; int main() { Saving saving[5]; cout << "saving array" << endl; for (int i = 0; i < 5; i++){ cin >> saving[i]; saving[i].print(); cout << endl; } Saving myvec; vector<Saving> savingV; cout << "saving vector" << endl; while ((cin >> myvec) && (myvec.getAccno() != 9999)){ int i = 0; savingV.push_back(myvec); savingV[i].print(); cout << endl; i++; } return 0; }
Как вы можете видеть в основной функции, которую я тестировал сначала с помощью массива.
В основном то, что я действительно хочу сделать, используя cin с классом(вектор, а не массив), - это продолжать вставлять значение до тех пор, пока не будет предложено Сторожевое значение, символ или строка.
& у меня все еще возникают проблемы с проектированием функций перегрузки операторов (например,! =)
Это то, что я думал сделать, перегружая оператор"!="
while ((cin >> myvec) && myvec != 9999);
Но я не знаю, можно ли это сделать.
Что я уже пробовал:
делать{
int i = 0;
cin > & gt; myvec;
savingV.push_back(омываек);
savingV[i]. print();
cout < & lt; endl;
я++;
} пока (Кин &ГТ;&ГТ; омываек и усилитель; & ((омываек.getAccno() != 9999) || (омываек.метода getbalance() != 9999)));