我是C++映射的新手。我想在我的程序中使用類似以下的地圖。在C++中使用映射<pair <int,int>,string>
std::map<std::pair<int,int>,string> pattern
這裏的關鍵int,int
實際上行的二維網格的位置和列位置和列是未知的最初。所以我曾經想過最初將列設置爲0.在程序過程中,它也可能是負面的。那麼任何人都可以幫助我如何訪問和設置這樣的地圖的元素?
我是C++映射的新手。我想在我的程序中使用類似以下的地圖。在C++中使用映射<pair <int,int>,string>
std::map<std::pair<int,int>,string> pattern
這裏的關鍵int,int
實際上行的二維網格的位置和列位置和列是未知的最初。所以我曾經想過最初將列設置爲0.在程序過程中,它也可能是負面的。那麼任何人都可以幫助我如何訪問和設置這樣的地圖的元素?
你的問題並不完全清楚。但是這個小示例演示瞭如何初始化其關鍵字由行列對組成的映射(本例中爲10行和10列),每個鍵的值都是「行,列」模式。然後樣本迭代地圖並打印出地圖的每個鍵值對。
map<pair<int,int>,string> patterns;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
patterns[make_pair(i, j)] = std::to_string (i) + ", " + std::to_string (j);
}
}
for (const auto &pair : patterns) {
std::cout << pair.first.first << "," << pair.first.second << ": " << pair.second << '\n';
//note pair.first in the row column pair, pair.first.first is the row, pair.first.second is the column, pair.second is the string pattern
}
只要你編譯C++ 11模式(其如在2014年,你應該),該對中的值可以被指定爲一個支撐-INIT列表,例如{ 4, -13 }
,在map
的大部分界面功能中。這不適用於emplace
或使用完美轉發的其他任何內容。
例如:
patterns[{ 1, 2 }] = "hello"; // set a given element
patterns.at[{ 1, 2 }] = "Hello"; // alter a given pre-existing element
foo(patterns.at[{ 1, 2 }]); // pass a (reference to) pre-existing element
patterns.erase({ 3 , 4 }); // ensure that given element no longer exists
您是不是要找'的std ::地圖<性病::對,字符串> pattern'? –
Brian
絕對是。 – Joy
究竟是什麼問題? 「map」類的文檔在設置/檢索元素方面非常清晰和簡潔。 http://en.cppreference.com/w/cpp/container/map – Jack