2016-10-16 1 views
3

Я пытаюсь скомпилировать очень простую программу на языке C++ компилятором g ++.Ошибка компиляции C++: «Пара» не называет тип

//main.cpp 

#include <stdio.h> 

using namespace std; 

typedef pair<int,int> pii; 

int main(int argc, char *argv[]) 
{ 
    printf("Hi"); 
    return 0; 
} 

Но я получаю ошибку компиляции: 'пара' не называет предустановленный вариант

Compile строку: г ++ main.cpp -o main.out ОС: Ubuntu 16.04 LTS г ++: GCC версии 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.2)

Если я просто добавить #include<iostrem> программа компилируется и работает успешно :)

#include <stdio.h> 
#include<iostream> 

using namespace std; 

typedef pair<int,int> pii; 

int main(int argc, char *argv[]) 
{ 
    printf("Hi"); 
    return 0; 
} 

Знаете ли вы, почему это происходит?

+0

Вы знаете, что заголовки для, не так ли? – tkausl

+0

Потому что 1. Вам нужно включить правый заголовочный файл и 2. вам нужно полностью [забыть, что 'using namespace std;' существует] (http://stackoverflow.com/questions/1452721/why-is-using -namespace-станд рассмотренный-плохо-практика). –

+1

Любой стандартный заголовок C++ может включать любой другой заголовок, поэтому случайный заголовок может это сделать. Лучший способ - включить заголовок '', где предполагается объявить [' std :: pair'] (http://en.cppreference.com/w/cpp/utility/pair). –

ответ

5

Моя вина, ответ прост :)

1) Для использования pair я должен включить <utility>.

2) <iostream> где-то включает в себя <utility>, поэтому после добавления его программа компилируется успешно :)

+0

привет –