Может кто-нибудь помочь лучше понять вывод typeid.name()
на картах и векторах? Пожалуйста, найдите мою программу и ее результаты ниже.Понимание вывода typeid.name() для карт и векторов в C++
Например: выход для std::map<int,int>
выходит TYPE is: [St3mapIiiSt4lessIiESaISt4pairIKiiEEE]
, где я могу расшифровать немного т.е. карте для std::map
Ofcourse, Iii для int,int
, но что же остальные символы означают?
Программа:
#include <iostream>
#include <map>
#include <vector>
#include <typeinfo>
using namespace std ;
template <class A>
void showtype (A x)
{
cout<<"TYPE is: ["<<typeid(x).name()<<"]\n" ;
}
int main()
{
std::map<int,int> iM ; showtype(iM) ;
std::map<int,std::string> isM ; showtype(isM) ;
std::map<std::string,std::string> ssM ; showtype(ssM) ;
std::vector<std::string> sV ; showtype(sV) ;
std::vector<int> iV ; showtype(iV) ;
return 0 ;
}
Выход:
%[email protected]> ./typeid.name
TYPE is: [St3mapIiiSt4lessIiESaISt4pairIKiiEEE]
TYPE is: [St3mapIiSsSt4lessIiESaISt4pairIKiSsEEE]
TYPE is: [St3mapISsSsSt4lessISsESaISt4pairIKSsSsEEE]
TYPE is: [St6vectorISsSaISsEE]
TYPE is: [St6vectorIiSaIiEE]
%[email protected]>
Команда Try-at-home: 'C++ filter <<<" _ZSt3mapIiiSt4lessIiESaISt4pairIKiiEEE "' –
Спасибо Kerrek. Я могу видеть расширение остальных персонажей. – User9102d82
Что такое «_Z»? это какой-то флаг? без него ничего не происходит. – User9102d82