如果我有一个std :: map和std :: unordered_map,我怎么能在double上使用指针,这样当unordered_map更新特定键的double值时,这已经反映在std :: map中了同样的“关键”?
所以:
unordered_map [“1”] = 6导致map [“1”]也是6 ....
答案 0 :(得分:4)
没有理由不能使用指针。
示例:强>
#include <iostream>
#include <map>
#include <unordered_map>
#include <memory>
int main()
{
std::unordered_map<std::string, std::shared_ptr<double>> umap;
std::map<std::string, std::shared_ptr<double>> omap;
std::shared_ptr<double> value(new double(1234.5));
umap.emplace("key", value);
omap.emplace("key", value);
std::cout << "umap " << *umap["key"] << "\n";
std::cout << "omap " << *omap["key"] << "\n";
*umap["key"] = 9999.1;
std::cout << "omap " << *omap["key"] << "\n";
}
<强>输出:强>
umap 1234.5
omap 1234.5
omap 9999.1
答案 1 :(得分:1)
也许是这样的:
std::unordered_map<std::string, double> um;
std::unordered_map<std::string, double*> om;
om["1"] = &um["1"];
从现在开始,*om["1"]
始终是um
中相应元素的值。只需确保永远不要删除无序地图中的元素。