2011-04-29 131 views
0

我不能让map与类一起工作,这里有什么问题?我不明白,请帮助:如何在使用C++类中的方法时正确使用映射

#include <map> 
#include <iterator> 

class base { 
public: 

    bool delete_lowest(map<char, double> &frequencies) 
    { 
     double min=1; char del ; box b1; 
     for (iterator itr = frequencies.begin(); itr != frequencies.end(); ++itr) 
     { 
      if(itr->second < min) 
      { 
       min= itr->second ; 
       del= itr->first ; 
      } 
     } 
     frequencies.erase(del) ; 
     return true; 
    } 

我得到像“地图未声明”等错误。我认为我编码的方式不是正确的方式。那么我该如何继续? 谢谢

回答

5

map位于std命名空间。尝试

bool delete_lowest(std::map<char, double> &frequencies) 
2

有三种解决方案,您的错误:你的类

    1. 代替map使用std::map
    2. 添加using std::map类前添加using namespace std
  • +2

    如果它在一个头文件中,实际上只有一个选项。 http://stackoverflow.com/questions/4872373/why-is-including-using-namespace-into-a-header-file-a-bad-idea-in-c – Cubbi 2011-04-29 21:16:47

    +2

    如果类是在头文件中声明的,最好不要使用(2)或(3):它将'std :: map'或整个'std'命名空间导入到包含该头文件的所有模块中。这种命名空间污染往往是不受欢迎的。因此,在头文件中,使用明确的限定条件,在实现文件中,仍然可以自由使用(2)和(3)。或者,你甚至可以在你的类中放入一个'typedef std :: map map;'。 – 2011-04-29 21:17:24

    相关问题