#include <bits/stdc++.h>
--------------------------
---------------------------
#include<map>
-----------------
#include<iterator>
-------------------------
using namespace std;
------------------------------------
int main(){
map<int,int>M;
M[1]=2;
M[3]=4;
M[4]=5;
M[2]=3;
for(typeof(M.begin()) it = (M).begin(); it != (M).end(); ++it);
cout<<it->second;
return 0;
}
C ++ язык не имеет typeof
оператор. Это специфичное для GCC расширение языка Си. Функция C ++ 11 с такой же (или очень похожей) функциональностью decltype
, использование decltype
в коде C ++ нет typeof
,
Тем не менее, в вашем конкретном случае auto
может быть более подходящей альтернативой.
Я думаю, что вы можете использовать авто.
for (auto it = m.begin(); it != m.end(); ++it)
cout << it->second << endl;
или вы можете использовать итераторы.
map<int, int>::iterator it;
for (it = m.begin(); it != m.end(); ++it)
cout << it->second << endl;
Используя онлайн-компилятор, ваш пробег может отличаться.
С помощью man gcc | grep "\-std"
дает нам это:
-std= extensions that do not contradict it. For example, -std=c90 turns the standard. For example -std=gnu90 -Wpedantic warns about C++ style // comments, while -std=gnu99 -Wpedantic does not. GNU dialect of -std=c++98. This is the default for C++ code.
Это означает, что -std=gnu++98
режим по умолчанию, когда -std
не указано Хотя указав любой из c++xx
стандарты приведут к тому, что он не скомпилируется. Вы можете исправить это с помощью gnu++xx
вместо этого (что позволяет Расширения GNU.) Это означает, что ваш код не будет компилироваться с использованием режима Ideone C ++ 11 (который добавляет -std=c++11
), но будет в режиме C ++ 4.8.1 (который, скорее всего, не добавляет -std
переключатель). С помощью Coliru, Вы можете изменить вызов самостоятельно и протестировать эти параметры.
В качестве альтернативы, если вы решите не использовать gnu++xx
, пытаться __typeof__
,
Как уже говорили другие, если вы находитесь в режиме C ++ 11, это идиоматично использовать auto
в цикле итератора:
for (auto it = map.begin(); it != map.end(); ++it)