无法std :: cout一个max_element函数

时间:2019-10-30 19:41:16

标签: c++ vector

我正在寻找600851475143的最大素数。

#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

bool isPrime(long long int number) {
    if (number < 2)
        return false;
    if (number > 2 && (number % 2) == 0)
        return false;
    for (long long int i = 2; i < number; i++)
    {
        if ((number % i) == 0)
        {
            return false;
        }
    }
    return true;
}

int main()
{
    vector<long long int> myVectorOfPrimes;
    myVectorOfPrimes.push_back(1);
    myVectorOfPrimes.push_back(0);
    for(long long i = 2; i < 600851475143; i++) {
        if (isPrime(i)) {
            myVectorOfPrimes.push_back(i);
        }
    }
    auto value = max_element(myVectorOfPrimes.cbegin(), myVectorOfPrimes.cend());
    cout << value;
}   

我希望max_element函数能够在myVectorOfPrimes中找到最大的素数,找到其数据类型,然后将其删除。相反,我得到错误E0349:没有运算符“ <<”与这些操作数匹配,并且错误:C2679二进制'<<':找不到使用类型为'_FwdIt'的右侧运算数的运算符(或者没有可接受的转换) )

1 个答案:

答案 0 :(得分:3)

std::max_element函数将迭代器返回给max元素。您必须写:

cout << *value;

(您可能需要更改变量的名称。)

您还可以通过从max_element返回的迭代器中减去begin迭代器来获取max元素的索引。