-1

我是第一次学习stl功能,所以这段代码来自dietel,我想在dev-c++ orwell 5.4中实现,但是代码没有运行,是什么问题。stl 库不包含在 dev-cpp 中吗?

它显示错误 - 地图没有命名类型?

#include <iostream>
#include <map>

typedef map< int , double , less< int > > Mid ; 
using namespace std ;

int main()
{
Mid pairs ;

pairs.insert( Mid::value_type( 15 , 2.7 ) ) ;
pairs.insert( Mid::value_type( 30 , 111.11 ) ) ;
pairs.insert( Mid::value_type( 5 , 1010.1 ) ) ;
pairs.insert( Mid::value_type( 10 , 22.22 ) ) ;
pairs.insert( Mid::value_type( 25 , 33.333 ) ) ;
pairs.insert( Mid::value_type( 5 , 77.54 ) ) ;
pairs.insert( Mid::value_type( 20 , 9.345 ) ) ;
pairs.insert( Mid::value_type( 15 , 99.3 ) ) ;

cout << "pairs contains:\nKey\tValue\n" ;

for( Mid::const_iterator iter = pairs.begin() ;
    iter != pairs.end() ; ++iter )
    cout << iter->first << '\t' << iter->second << '\n' ;

pairs[ 25 ] = 9999.99 ;
pairs[ 40 ] = 8765.43 ;
cout << endl ;
cout << "After subscript operations: " ;
cout << endl ;
for( Mid::const_iterator iter = pairs.begin() ;
    iter != pairs.end() ; ++iter )
    cout << iter->first << '\t' << iter->second << '\n' ;

cout << endl ;
return 0 ; 

}
4

2 回答 2

1

您在使用命名空间 std; 之前对映射进行类型定义,这就是编译器看不到它的原因

于 2013-07-02T09:38:23.593 回答
1
#include <iostream>
#include <map>

typedef map< int , double , less< int > > Mid ; 
using namespace std ;

在此代码段中,您使用的是map在告诉您正在使用命名空间之前std。因此,您的编译器不知道在哪里寻找map并告诉您它从未听说过它。写吧:

using namespace std ;
typedef map< int , double , less< int > > Mid ;

它应该可以解决这个问题。

于 2013-07-02T09:39:29.647 回答