簡單的答案:
#include <unordered_map>
#include <boost/range/adaptors.hpp>
#include <string>
#include <iostream>
using namespace boost::adaptors;
int main() {
std::unordered_map<std::string, int> map{{"one",1},{"two",2}};
for (char const* sz : map
| map_keys
| transformed(std::mem_fn(&std::string::c_str))
) {
std::cout << sz << "\n";
}
}
我的首選:
#include <unordered_map>
#include <boost/range/adaptors.hpp>
#include <string>
#include <iostream>
using namespace boost::adaptors;
int main() {
std::unordered_map<std::string, int> map{{"one",1},{"two",2}};
for (char const* sz : map | transformed([](auto const& p) { return p.first.c_str(); }))
{
std::cout << sz << "\n";
}
}
我沒意識到你可以用這種方式進行改造,它只是我一直在尋找的東西。此外,你贏得使用自動。 – Mart
要回答你的問題,我需要對迭代的對象進行標準佈局保證。 – Mart