【发布时间】:2021-07-12 07:17:57
【问题描述】:
我正在尝试打印用户从当前地图定义的人口:
我的问题是为什么当我将 iterable 返回给 main 函数时它的值会发生变化?
#include <iostream>
#include <string>
#include <map>
std::map<std::string , int> :: iterator get_population(std :: string state , std::map<std::string , int> populationMap)
{
std::map<std::string , int> :: iterator iter;
iter = populationMap.find(state);
// Debug statement
std::cout << "Population is : " << iter -> second;
return iter;
}
int main()
{
std::map<std::string , int> populationMap;
populationMap.insert({{"Mahrashtra" , 124945748 } , {"Uttar Pradesh" , 223897418} , {"Bihar" , 121741741} , {"West Bengal" , 91276115}});
std::string state = "";
std::cout << "Enter the state who's population you want to find : \n";
std::cin >> state;
// defining a new iterable which stores return from get_population
std::map<std::string , int> :: iterator iter;
iter = get_population(state , populationMap);
std::cout << "The current population of " + state + " is : ";
std::cout << iter->second;
}
它给了我以下输出: 输入您要查找人口的州: 马拉施特拉邦 人口为:124945748 马拉施特拉邦目前的人口为:1769234796
如果我选择像比哈尔这样的另一个键,它工作得很好,它只对马哈拉施特拉邦有不同的作用。任何帮助将不胜感激
【问题讨论】:
-
您通过值传递
populationMap,因此get_population中的iter与populationMap的本地副本相关联,并在返回时变为无效。尝试通过 const 引用传递populationMap。