繁体   English   中英

我遇到了不转换 const__gnu_cxx::__normal_iterator 的问题<long long int* , std:: vector<long long int>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM