1
在VS2015我为什么能做到这一点使用lambda函数作为比较的一个std ::地图
typedef std::pair<std::set<std::string>::const_iterator,std::set<std::string>::const_iterator> paircmpiter;
struct PairCmp {
bool operator()(const paircmpiter& lhs, const paircmpiter& rhs) const {
return (*lhs.first + *lhs.second) < (*rhs.first + *rhs.second);
}
};
std::map <paircmpiter,std::vector<std::pair<std::set<std::string>::const_iterator, int>>, PairCmp> markov;
但不是这个
auto paircmp = [](const paircmpiter& lhs, const paircmpiter& rhs) {
return (*lhs.first + *lhs.second) < (*rhs.first + *rhs.second);
};
std::map <paircmpiter,std::vector<std::pair<std::set<std::string>::const_iterator, int>>, decltype(paircmp)> markov;
我本来期望的decltype
会允许我使用lambda函数作为比较。
如何使用lambda语法使其工作?
'的std ::地图 ::为const_iterator, int >>,decltype(paircmp)> markov(paircmp);' –
完美谢谢。你可以把答案,所以我可以投票 – Ronnie