Bunu artırmak kullanmak mümkün::dosyalarda grup std::map?
boost::foreach bana tasarrufu gibi çok yararlı bir yazı çok şey buluyorum. Örneğin, bir listedeki tüm elemanları yazdırmak istiyorum ki:
std::list<int> numbers = { 1, 2, 3, 4 };
for (std::list<int>::iterator i = numbers.begin(); i != numbers.end(); i)
cout << *i << " ";
::boost dosyalarda grup kodu yukarıda çok simplier yapar:
std::list<int> numbers = { 1, 2, 3, 4 };
BOOST_FOREACH (int i, numbers)
cout << i << " ";
Çok daha iyi! Ancak hiç std::map
ler için bunu kullanmak için bir yol eğer mümkünse () anladım. Belgelere sadece vector
string
gibi türleri ile ilgili örnekler vardır.
CEVAP
Kullanmanız gerekir:
typedef std::map<int, int> map_type;
map_type map = /* ... */;
BOOST_FOREACH(const map_type::value_type& myPair, map)
{
// ...
}
Nedeni makro iki parametre beklemektedir. Çift tanımını içi için çalıştığınızda, size ikinci bir virgül, üç parametre yerine makro yapma tanıtmak. Bu kadar basit, herhangi bir C yapıları saygı değil, sadece metin biliyor.
BOOST_FOREACH(pair<int, int>, map)
, bu kadar basit makro için bu üç bağımsız görür derken:
1.pair<int
2. int>
3. map
Yanlış olan. Bunun için her belgelerinde mentioned.
Kullanmak'bir KİMLİK olarak varSt...
Dosyalarda grup için tanımlayıcı ve ka...
Bunu PHP statik sınıflar oluşturmak mü...
Değişkenler ve/veya parametreleri kull...
Nedir [].dosyalarda grup.() çağrısı Ja...