如果我有一個std :: map和std :: unordered_map我怎麼能在double上使用指針,這樣當unordered_map更新特定鍵的double值時,這已經在std :: map中反映出來了「鍵」?map和unordered_map包含指向double的指針?
所以:
unordered_map [ 「1」] = 6原因映射[ 「1」]是6還....
如果我有一個std :: map和std :: unordered_map我怎麼能在double上使用指針,這樣當unordered_map更新特定鍵的double值時,這已經在std :: map中反映出來了「鍵」?map和unordered_map包含指向double的指針?
所以:
unordered_map [ 「1」] = 6原因映射[ 「1」]是6還....
也許是這樣的:
std::unordered_map<std::string, double> um;
std::unordered_map<std::string, double*> om;
om["1"] = &um["1"];
從現在*om["1"]
始終是um
中相應元素的值。只要確保你永遠不會從無序地圖中刪除元素。
沒有理由爲什麼你不能使用指針。
例子:
#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
你可能會喜歡接受的解決方案,如果他們中的一個是有幫助的。 – goji