MapValue 和迭代器 C++ 之间的比较
comparison between mapvalue and iterator c++
我想知道是否有办法比较两个值以查看它们是否相等。我有一个地图,其中键是 int,类型是一个类。我想找到一个特定的数字,看看它是否存在于地图中,如果它做了某个动作,应该做一些动作。
即:我有一个存储在地图容器中的银行账户。我想更改该帐户的余额值。
我的地图声明中的 int 是帐号。
map<int, class>::iterator it;
map<int, class>::myMap;
void Deposit(){
int banknbr;
int amount;
cout << "What is your acc numb?" << endl;
cin >> bankNbr;
for(it = myMap.begin(); it != myMap.end(); it++){
if(it->first==myMap[bankNbr]){
cout << "How much money do you wish to deposit?" << endl;
cin >> amount;
deposit(); // balance = balance + amount;
或者类似的东西。如果我存储两个帐户,我会覆盖第一个帐户的余额。因此,如果第一个账户的余额为 100,第二个账户的余额为 200,我想在第一个账户中存入 100 美元,那么我的价值就会变成 300,这是不正确的。
我现在的代码是这样的:
void deposit(int number){
int amount;
for(it = myMap.begin(); it != myMap.end(); it++){
myMap.find(number);
if(it != myMap.end(){
cout << "How much money do you wish to deposit?"<<endl;
cin >> amount;
acc.deposit(amount); //acc is my own implemented class
cout << "Your balance is: " << acc.getBal(number) << endl; //get bal is return balance
}
}
}
您可以使用find
map
方法来查找密钥是否存在。
如果键存在,则 find
方法返回迭代器,否则map::end
it=mymap.find(number);
if(it!=myMap.end()){
//your code
}
您可以在此处找到此方法的更多详细信息 http://www.cplusplus.com/reference/map/map/find/
//for(it = myMap.begin(); it != myMap.end(); it++){
it = myMap.find(number); //assign "it"
if(it != myMap.end(){
cout << "How much money do you wish to deposit?"<<endl;
cin >> amount;
acc.deposit(amount); //acc is my own implemented class
cout << "Your balance is: " << acc.getBal(number) << endl; //get bal is return balance
}
// }
这是你的问题:
for(it = myMap.begin(); it != myMap.end(); it++){ // it will iterate through all acounts
myMap.find(number); // find returns an iterator BUT YOU DON'T ASSIGN IT
if(it != myMap.end(){ // For each iteration this will be true, cause it is only changed in the for statement
find
是处理此问题的正确方法:
void Deposit(){
int banknbr;
cout << "What is your acc numb?" << endl;
cin >> bankNbr;
auto it = myMap.find(bankNbr);
if(it != myMap.end()){
int amount;
cout << "How much money do you wish to deposit?" << endl;
cin >> amount;
it->second.deposit(amount);
cout << "Your balance is: " << it->second.getBal() << endl; //get bal is return balance
}
}
看起来您对map
的工作原理有一些误解,所以如果不清楚,请告诉我。
相关文章:
- 禁止指针和整数之间的比较C++
- ISO C++禁止指针和整数 [-fpermissive] [c++] 之间的比较
- 比较它们之间的元素并获取公共值的键
- 零点和布尔值之间的比较
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- C++ - 负数和正数之间的比较返回 false
- Qt 错误 iso c++ 禁止指针和整数之间的比较 -permissive
- C++模板参数之间的比较似乎被忽略了
- 为什么C++容器之间存在比较运算符
- 错误:ISO C++禁止在指针和整数 [-fallowive] 之间进行比较
- 数字之间的比较
- C++ - 比较模板和类之间的数据类型
- 获取字符串大小的各种方法之间的比较
- 比较器的两个实现之间的差异
- 如何修复C++中的"指针和整数之间的比较"错误?
- 不同指针类型之间的无效比较:'type*' 和 'type&(*)()'
- 符号和未签名整数表达式之间的比较,以进行循环误差
- 比较C 中移动和智能指针之间的习惯
- Python,C ,C#和Java中的字符串比较之间的差异
- 与表达式或变量进行比较之间的性能差异