什么是 std::map<K,V>::map;当 implementing/using stl 容器和函数时,你怎么知道要使用什么命名空间?
What is std::map<K,V>::map; and how do you know what namespace to use when implementing/using stl containers and functions?
我正在尝试编写继承 std::map 的 class,但我还想重载一个特定函数,同时保持其余继承函数可供使用。在阅读了一些内容之后,您似乎必须使用 map 的命名空间才能使用它的功能。但是我必须使用 using std::map<K,V>::map;
才能正常工作。我的问题是最后一个 ::map
是什么?它是地图的命名空间的名称吗?但是如果我们以 cout 为例,你只需要 using cout;
。另外,如何知道我 stl 的名称空间的名称?
代码看起来像这样:
#include <map>
template<typename K,typename V>
class my_map : public std::map<K,V>
{
private:
/* data */
public:
using std::map<K,V>::map;
};
using std::map<K,V>::map;
如果您想在 class 之外使用基本构造函数(以继承构造函数),则需要使用它。
而这个 std::map<K,V>::map
是构造函数并由 class 名称限定。
我正在尝试编写继承 std::map 的 class,但我还想重载一个特定函数,同时保持其余继承函数可供使用。在阅读了一些内容之后,您似乎必须使用 map 的命名空间才能使用它的功能。但是我必须使用 using std::map<K,V>::map;
才能正常工作。我的问题是最后一个 ::map
是什么?它是地图的命名空间的名称吗?但是如果我们以 cout 为例,你只需要 using cout;
。另外,如何知道我 stl 的名称空间的名称?
代码看起来像这样:
#include <map>
template<typename K,typename V>
class my_map : public std::map<K,V>
{
private:
/* data */
public:
using std::map<K,V>::map;
};
using std::map<K,V>::map;
如果您想在 class 之外使用基本构造函数(以继承构造函数),则需要使用它。
而这个 std::map<K,V>::map
是构造函数并由 class 名称限定。