我希望使用boost:range工具来转换一个向量,并将原始元素作为键,转换后的元素作为值放入std::map中。我想到了下面的方法。但显然,我不知道在最后一步中如何实际插入元素。你能帮我一下吗?
#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <boost/range/adaptors.hpp>
#include <boost/range/algorithm/copy.hpp>
const std::vector<int> vec = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
void doSomething(int i)
{
// Do Something
}
/** Map integers to the alphabet: 0->a, 1->b, ... */
std::string alphabetize(int i)
{
return std::string(1, 'a' + i);
}
int main()
{
std::map<std::string, int > myMap;
boost::copy(vec | boost::adaptors::transformed(alphabetize), std::inserter(myMap, myMap.end()));
}
为了进一步拓展,如何使用for_each函数来调用所有元素的函数,类似于这样:
boost::range::for_each(myMap | boost::adaptors::map_value, doSomething);