2016-03-28 30 views
0

ile harita değerleri yazdırırken, ne yapacağımı göremediğim bir sorun yaşıyorum. Ben Yalnızca STL döngüleri

burada gerçekten gerekli olup olmadığını sürece doğrusu kendim başka bir fonksiyon ilan istemem benim haritası std::map<std::string, Borrowed*> map;

var .. i döngüler vs ederken döngüler için kullanamaz, sadece STL döngüler ile harita değerlerini yazdırmak zorunda yapmak

Düzenleme: for_each ve kopyalama işlevini kullanarak denedim ama bu kullanmalısınız buysa sana STL algoritmaları demek varsayarsak bunları

+0

i mantıklı bir şekilde kullanarak çalıştı ama aynı zamanda bir –

+0

istiyor sanırım ama bunu nasıl kullanabilirim: std :: bir std ile kopyalama :: ostream_iterator –

+0

görmüyorum, sana DieterLücking Yea @ Std :: for_each –

cevap

0

nasıl kullanacağını görmüyorum:

İşte

birolduğunuörneği (C++ 11):

#include <algorithm> 
#include <iostream> 

std::for_each(map.cbegin(), map.cend(), 
    [&](const std::pair<std::string, Borrowed*> &pair) { 
    std::cout << pair.first // std::string (key) 
     << " " << pair.second->XXX // Borrowed* (value) or whatever you want to print here 
     << "\n"; 
}); 

http://en.cppreference.com/w/cpp/algorithm/for_each

+0

Teşekkürler bu işe yarıyor! ama burada ne yapmamızı ve anlamamıza yardımcı olamıyorum –

+0

Burada 'map' değişkenini yakalamıyoruz, çünkü lambdada kullanmıyoruz. Biz aslında burada & quot [http://en.cppreference.com/w/cpp/language/lambda] (http://en.cppreference.com/w/cpp/language/lambda) atlayabiliriz. – foo

2

Sadece (simplicitly için map<string, int> kullanılarak Borrowed* elemanları yazdırmak için kendi kodunuzu kullanın) elemanını yazdıran bir lambda'da std::for_each kullanın.

#include <algorithm> 
#include <iostream> 
#include <iterator> 
#include <map> 

int main() 
{ 
    std::map<std::string, int> m = { { "bla", 1 }, { "yada", 2 } }; 
    std::for_each(m.begin(), m.end(), [](auto const& elem) { 
     std::cout << "{ " << elem.first << ", " << elem.second << "}, "; 
    }); 
} 
bu (parametre türü anlamak için auto ile) C++ 14 genel lambdas kullanan

Live Example

not edin. C++ 11'de bunu açık bir şekilde yazmanız gerekiyordu ve C++ 98'de lambda'nın çalışmasına kendi fonksiyon nesnesini yazmak zorunda kalacaktınız.