std::map中的std::map。

 #include <iostream>
#include <map>
template<typename T>
class Node{
 public:
  T key;
  int data;
  
  template<typename Ty>
  Node(const Ty& key_);
  
  Node()=default;
  
  ~Node()=default;
  
  template<typename Ty>
  friend bool operator<(const Node<Ty>& first_, const Node<Ty>& second_); //注意这里由于map中的元素都是有顺序的因此必须给Node重载一个 <. 
};
template<typename T>
template<typename Ty>
Node<T>::Node(const Ty& key_)
        :key(key_),
         data(0)
{
 std::cout<<"success to construct"<<std::endl;
}
template<typename Ty>
bool operator<(const Node<Ty>& first_, const Node<Ty>& second_)
{
 return first_.key > second_.key ? true : false;
}
int main()
{
 Node<int> first(20);
 Node<int> second(40);
 
 std::map<Node<int>, int> myMap;
 myMap[first] = 10;
 
 std::map<Node<int>, std::map<Node<int>, int>> testMap;
 testMap[first][second] = 100;
 //myMap.insert(std::make_pair<first, std::make_pair<second, 100>>); //只有当first和second为constexpr的时候才能用. 
 std::cout<<testMap[first][second]<<std::endl;
 return 0;
}

你可能感兴趣的:(std::map中的std::map。)