【发布时间】:2014-07-20 07:27:10
【问题描述】:
我认为这个 std::map 键提取到 std::vector 应该可以在没有为 gcc (4.6) 指定 --std=c++0x 标志的情况下工作,但它没有。知道为什么吗?
template <typename Map, typename Container>
void extract_map_keys(const Map& m, Container& c) {
struct get_key {
typename Map::key_type operator()
(const typename Map::value_type& p) const {
return p.first;
}
};
transform(m.begin(), m.end(), back_inserter(c), get_key());
}
谢谢!
【问题讨论】:
-
您能具体说明“不起作用”是什么意思吗?使这个问题和下面的答案可以找到的某种错误描述将使这更有用。
-
@UlrichEckhardt “不起作用”意味着一个神秘的模板实例化错误,当我将 --std=c++0x 添加到命令行时,我看到该错误消失了。恐怕添加错误消息不会使搜索更容易。
-
实际上可以读取这些错误。您需要做的只是稍微构造它们,以便您看到填充一页的模板的嵌套模板只是一个
map<string,string>。然后,剩下的就是与这些类型相关的错误消息,并且肯定可以搜索到。 :)