#include <iostream>
#include <map>
int main()
{
// 這一行代碼格外重要晴裹,決定了裸指針不重復(fù)
std::map<std::shared_ptr<int>, std::string, std::owner_less<std::shared_ptr<int> > > vals;
std::shared_ptr<int> k1 = std::shared_ptr<int>(new int(3));
vals[k1] = "hello";
std::shared_ptr<int> k2 = k1;
vals[k2] = "world";
std::shared_ptr<int> k3 = std::shared_ptr<int>(new int(4));
vals[k3] = "this is a c++";
for (std::map<std::shared_ptr<int>, std::string>::iterator it = vals.begin(); it != vals.end(); ++it)
{
std::cout << "key:" << *(it->first) << ", val:" << it->second << std::endl;
}
std::cout << "main over" << std::endl;
getchar();
return 0;
}
輸出結(jié)果:
key:3, val:world
key:4, val:this is a c++
main over