Компилятор выводит ошибку “'min' was not declared in this scope”

115
03 мая 2021, 06:00

Я тут написал код, вроде все правильно но компилятор c++ 14 выводит:

error: 'vector' does not name a type
In function 'int main()':
error: 'min' was not declared in this scope

Код:

#include<bits/stdc++.h>
#include<vector>
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ll N = 1e5 + 5;
const ll MAX = 2e5 + 123;
const ll MOD = 1e9 + 7;
ll n, s, mn = MAX, a[ N ];
vector< ll > v;
int main()
{
    scanf( "%I64d", &n );
    for( ll i = 1; i <= n; i ++ )
    {
        scanf( "%I64d", &a[ i ] );
        s += a[ i ];
        mn = min( mn, a[ i ] );
    }
    if( a[ 1 ] < s / 2 || mn > a[ 1 ] / 2 ) 
        return printf( "0\n0" ), 0;
    for( ll i = 2; i <= n; i ++ )
    {
        if( a[ 1 ] / 2 >= a[ i ] ) 
            v.push_back( i );
    }
    cout << v.size() << '\n';
    for( ll i = 0; i < v.size(); i ++ ) 
        cout << v[ i ] << ' ';
}
Answer 1

Не хватает подключения пространства имён std:

#include<bits/stdc++.h>
#include<vector>
using namespace std; // Этой строки не хватало
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ll N = 1e5 + 5;
const ll MAX = 2e5 + 123;
const ll MOD = 1e9 + 7;
ll n, s, mn = MAX, a[ N ];
vector< ll > v;
int main()
{
    scanf( "%I64d", &n );
    for( ll i = 1; i <= n; i ++ )
    {
        scanf( "%I64d", &a[ i ] );
        s += a[ i ];
        mn = min( mn, a[ i ] );
    }
    if( a[ 1 ] < s / 2 || mn > a[ 1 ] / 2 ) return printf( "0\n0" ), 0;
    for( ll i = 2; i <= n; i ++ )
    {
        if( a[ 1 ] / 2 >= a[ i ] ) v.push_back( i );
    }
    cout << v.size() << '\n';
    for( ll i = 0; i < v.size(); i ++ ) cout << v[ i ] << ' ';
}

Используемые вами типы и операторы объявлены в пространстве имён std, вследствие чего необходимо обозначить, что Вы работаете в этом пространстве.

Также есть другой вариант: прописывать используемое пространство имён непосредственно перед каждым идентификатором, объявленным в нём:

#include<bits/stdc++.h>
#include<vector>
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const ll N = 1e5 + 5;
const ll MAX = 2e5 + 123;
const ll MOD = 1e9 + 7;
ll n, s, mn = MAX, a[ N ];
std::vector< ll > v;
int main()
{
    scanf( "%I64d", &n );
    for( ll i = 1; i <= n; i ++ )
    {
        scanf( "%I64d", &a[ i ] );
        s += a[ i ];
        mn = std::min( mn, a[ i ] );
    }
    if( a[ 1 ] < s / 2 || mn > a[ 1 ] / 2 ) return printf( "0\n0" ), 0;
    for( ll i = 2; i <= n; i ++ )
    {
        if( a[ 1 ] / 2 >= a[ i ] ) v.push_back( i );
    }
    std::cout << v.size() << '\n';
    for( ll i = 0; i < v.size(); i ++ ) std::cout << v[ i ] << ' ';
}
READ ALSO
Проблема c #include C++

Проблема c #include C++

у меня есть два класса Player и MapEditor , в классе Player я использую MapEditor, а в MapEditor я использую PlayerЯ забыл как называется это проблема но когда я пишу...

93
Не выходит проверка на введенные пользователем значения

Не выходит проверка на введенные пользователем значения

Код ошибок не вызывает, однако, при запуске кода - он даже не ждет пока пользователь введет значение и просто закрываетсяКак это исправить?...

97
Может ли функция не иметь имени?

Может ли функция не иметь имени?

Может ли функция не иметь имени?

81
Non-static class function - pointer

Non-static class function - pointer

В ранних версиях Android NDK использовался gnustl

109