当我阅读其他人的python代码时发现了这些东西:
#include <memory>
#include <unordered_map>
#include <iostream>
using namespace std;
class Node {};
typedef shared_ptr<Node> NodePtr;
struct HashFunction {
unsigned long operator()(const NodePtr& key) const {
return (unsigned long)key.get();
}
};
struct EqualFunction {
bool operator()(const NodePtr& t1, const NodePtr& t2) const {
return t1.get() == t2.get();
}
};
class Map
{
unordered_map<NodePtr, int, HashFunction, EqualFunction> map;
public:
void insert(NodePtr nodeToInsert, int val)
{
map.insert({nodeToInsert, val });
}
bool exist(NodePtr node) {
if (map.find(node) == map.end()) return false;
return true;
}
};
int main()
{
Node node; Map map;
auto nodePtr = make_shared<Node>(node);
map.insert(nodePtr, 1);
auto ptrToSameNode = make_shared<Node>(node);
if (map.exist(ptrToSameNode))
cout << "Node exists.";
else cout << "Node doesn't exist.";
}
似乎数组“ ori”具有三个元素,我们可以使用False和True来索引第一个和第二个元素。这怎么可能发生,为什么?