如果我有一个 std::map 和 std::unordered_map 我怎么能在双精度上使用指针,以便当 unordered_map 更新特定键的双精度值时,这已经反映在同一“键”的 std::map 中“?
所以:
unordered_map["1"] = 6 导致 map["1"] 也为 6....
如果我有一个 std::map 和 std::unordered_map 我怎么能在双精度上使用指针,以便当 unordered_map 更新特定键的双精度值时,这已经反映在同一“键”的 std::map 中“?
所以:
unordered_map["1"] = 6 导致 map["1"] 也为 6....
没有理由不能使用指针。
例子:
#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
也许是这样的:
std::unordered_map<std::string, double> um;
std::unordered_map<std::string, double*> om;
om["1"] = &um["1"];
从现在开始,*om["1"]
永远是 中对应元素的值um
。只要确保你永远不会从无序地图中删除元素。
(来源:迭代器和引用失效规则)