用於基於範圍爲C++ 11的常見的例子()環路是總是簡單的東西這樣的:如何使用基於範圍的for()循環與std :: map?
std::vector<int> numbers = { 1, 2, 3, 4, 5, 6, 7 };
for (auto xyz : numbers)
{
std::cout << xyz << std::endl;
}
在這種情況下,xyz
爲int
。但是,當我們有像地圖一樣的東西時會發生什麼?什麼是變量在這個例子中,類型:
std::map< foo, bar > testing = { /*...blah...*/ };
for (auto abc : testing)
{
std::cout << abc << std::endl; // ? should this give a foo? a bar?
std::cout << abc->first << std::endl; // ? or is abc an iterator?
}
當被經過的容器是簡單的東西,它看起來像範圍爲基礎的()循環會給我們每一個項目,而不是一個迭代器。這很好......如果它是迭代器,我們首先要做的第一件事就是解除引用它。
但我很困惑,當涉及到地圖和multimaps等事情時會發生什麼。
(我仍然在G ++ 4.4,而基於範圍的循環是G ++ 4.6+,所以我還沒有嘗試它尚未機會。)
聲明的範圍與標準庫'std :: begin'和'std :: end'函數或同名的成員函數不一樣。 –
xyz是一個可怕的變量名稱恕我直言。它看起來像x乘以y乘以z或某物。或者三個變量中的一個,x,y和z也沒有意義。爲什麼不使用x? – Will
@will在一個3行的例子中,你被抓到了假的變量名? –