【发布时间】:2019-07-27 07:33:51
【问题描述】:
似乎无法弄清楚程序不断抛出的错误。当我取消引用迭代器时,程序不断抛出错误。谁能告诉我哪里出错了? 代码的问题是这样的“给定五个正整数,找到可以通过将五个整数中的四个精确相加来计算的最小值和最大值。然后将各自的最小值和最大值打印为一行,由两个空格分隔长整数。”
void miniMaxSum(vector<int> arr) { //arr = {1,2,3,4,5}
int sum = 0;
unordered_map<int,int> results;
for(size_t i = 0;i < arr.size();i++)
{
results[arr[i]] = accumulate(arr.begin(),arr.end(),sum) - arr[i];
}
pair<unordered_map<int,int>::iterator,unordered_map<int,int>::iterator> mn;
mn = minmax_element(results.begin(),results.end());
cout<< *mn.first<<" "<<*mn.second; //line where the error is occuring
}
Solution.cpp:在函数“void miniMaxSum(std::vector)”中: Solution.cpp:9:9: error: no match for 'operator
【问题讨论】:
-
想想您要打印的内容以及您是否以正确的方式进行打印。错误很清楚你错在哪里。
-
我尝试使用 ->,尽管它一直显示相同的错误。
-
旁注,
auto是你的朋友。这段代码更好auto mn = minmax_element(results.begin(), results.end()); -
@Afrahmohd 你到底想打印什么?请记住,您有一对迭代器,每个迭代器都指向另一对。
-
@Afrahmohd 错误是使用
unordered_map,请参阅下面的答案。