![](/img/trans.png)
[英]error: cannot convert ‘__gnu_cxx::__normal_iterator<Player*, std::vector<Player> >’ to ‘int’ in return
[英]I'm having an issue with not converting const__gnu_cxx::__normal_iterator<long long int* , std:: vector<long long int>
我正在尝试解决 Div 3 比赛中的一个问题。 我在第 25 行和第 26 行遇到问题,它说
error: cannot convert ' const__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int>
我不太确定出了什么问题。 这一行的目标是将向量 a 和 b 的最小值存储到一个长整数 amin 和 bmin 中。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define endl "\n"
void solve(){
ll input;
ll total;
int amount; cin >> amount;
vector<ll> a, b;
for(int i = 0; i < amount; i++){
cin >> input;
a.push_back(input);
}
for (int i = 0; i < amount; i++){
cin >> input;
b.push_back(input);
}
ll amin, bmin;
amin = min(a.begin(), a.end());
bmin = min(b.begin(), b.end());
ll adif, bdif, totaldif;
for(int i = 0; i < amount; i++){
adif = a[i] - amin;
bdif = b[i] - bmin;
totaldif = abs(adif - bdif);
total += (adif - totaldif) + (bdif - totaldif) + totaldif;
}
cout << total << endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t; cin >> t;
while(t--){
solve();
}
}
std::min
返回 2 个元素的最小值,而不是范围的最小元素。 假设您不想要 2 个迭代器的最小值,而是范围的最小元素,则需要std::min_element
并且需要取消引用结果,如下所示:
amin = * min_element(a.begin(), a.end());
// ^
你需要对bmin
做同样的事情。
另外,请避免using namespace std;
以及所有类型的#define
s,它只会使代码更难以阅读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.