jsa*_*der 19
是的,你可以......但要小心.operator<
是根据指针定义的,而不是指向的.
#include <memory>
#include <map>
#include <string>
#include <iostream>
int main() {
std::map<std::shared_ptr<std::string>,std::string> m;
std::shared_ptr<std::string> keyRef=std::make_shared<std::string>("Hello");
std::shared_ptr<std::string> key2Ref=std::make_shared<std::string>("Hello");
m[keyRef]="World";
std::cout << *keyRef << "=" << m[keyRef] << std::endl;
std::cout << *key2Ref << "=" << m[key2Ref] << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
版画
Hello=World
Hello=
Run Code Online (Sandbox Code Playgroud)
Woj*_*wka 14
是的你可以.std::shared_ptr
已经operator<
以适合地图密钥使用的方式定义.具体而言,仅比较指针值,而不是参考计数.
显然,尖头物体不是比较的一部分.否则,通过修改指向对象并使地图中的顺序与比较不一致,可以很容易地使地图无效.
归档时间: |
|
查看次数: |
9759 次 |
最近记录: |