是什么导致hash_map错误,如何解决?

时间:2020-01-03 16:28:06

标签: c++

我正在尝试编译并运行此GUI代码

#include "Graph.h" // get access to our graphics library facilities
int main()
{
    using namespace Graph_lib; // our graphics facilities are in Graph_lib
    Point tl{ 100,100 }; // to become top left corner of window
    Simple_window win{ tl,600,400,"Canvas" }; // make a simple window
    Polygon poly; // make a shape (a polygon)
    poly.add(Point{ 300,200 }); // add a point
    poly.add(Point{ 350,100 }); // add another point
    poly.add(Point{ 400,200 }); // add a third point
    poly.set_color(Color::red); // adjust properties of poly
    win.attach(poly); // connect poly to the window
    win.wait_for_button(); // give control to the display engine
}

标头和代码文件的来源:http://www.stroustrup.com/Programming/PPP2code/

我收到hash_map错误

Error (active)  E0035   #error directive: <hash_map> is deprecated and will be REMOVED. Please use <unordered_map>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning.    ConsoleApplication1 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.24.28314\include\hash_map 21  

什么原因导致hash_map错误,该如何解决?

2 个答案:

答案 0 :(得分:1)

hash_map是c ++ 11规范之前的旧API,他们决定该容器的名称为unordered_map。您需要改用该名称。

答案 1 :(得分:1)

它就是它所说的。

标头<hash_map>不是标准的,而是came from the actual STL。尽管it currently remains available on your platform,但它已“弃用,将被删除”。

您应该按照消息中的说明进行操作,然后切换到std::unordered_map之类的现代工具。不幸的是,这意味着您会迷失您的原始资料。

我猜测错误本身来自fltk(Bjarne的代码似乎都没有包含该标头,尽管我只是快速浏览了它)。这些示例非常非常古老。

您可以改为从a modern book学习C ++。

同时,如错误消息所述,您可以定义_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS(在项目设置中的“预处理器定义”下)以确认这一点。


类似的问题: