我有一个问题,我无法看到该怎么做。我必须只用STL循环打印地图值,我不能在循环等时使用循环。
这是我的地图std::map<std::string, Borrowed*> map;
我宁愿不自己宣布另一个功能,除非它真的有必要这样做
编辑:我尝试过使用for_each和copy功能,但如果你应该使用它我不知道你将如何使用它们
答案 0 :(得分:2)
只需将std::for_each
与打印元素的lambda一起使用(使用map<string, int>
进行简单使用,使用您自己的代码打印Borrowed*
元素。)
#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 << "}, ";
});
}
注意这使用C ++ 14广义lambdas(用auto
来推导出参数类型)。在C ++ 11中,您必须明确地将其写出来,而在C ++ 98中,您必须将自己的函数对象编写到lambda的工作中。
答案 1 :(得分:0)
假设您的意思是STL算法:
这是std::for_each
示例(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";
});