我可以看到为什么autoC++ 11中的类型提高了正确性和可维护性.我读过它也可以提高性能(Herb Sutter 几乎总是自动),但我错过了一个很好的解释.
auto提高性能?我正在尝试从std :: map获取具有最大值的元素,
int main() {
map<int, int> m;
m[1] = 100;
m[2] = -1;
auto x = std::max_element(m.begin(), m.end(), m.value_comp());
cout << x->first << " : " << x->second << endl;
}
Run Code Online (Sandbox Code Playgroud)
为什么它打印第二个元素2 : -1?
为什么这段代码会产生编译错误?
std::find_if(std::begin(some_list), std::end(some_list), [](const auto& item){
//some code
});
Run Code Online (Sandbox Code Playgroud)
当然在"自动"的错误?为什么不能自动知道类型?谢谢
我知道如何std::map通过使用检索 a 的最大元素std::max_element,但std::unordered_map由于容器类型之间的差异,我无法使用 a 实现相同的效果。
如何找到 a 中的最大值std::unordered_map并返回相应的std::pair?
显示了我当前使用 a 执行此操作的方法std::map(基于此答案)。我似乎无法弄清楚如何对std::unordered_map.
template <typename KEY_T, typename VALUE_T>
std::pair<KEY_T, VALUE_T> findMaxValuePair(
std::map<KEY_T, VALUE_T> const &x)
{
return *std::max_element(x.begin(), x.end(),
[](const std::pair<KEY_T, VALUE_T> &p1,
const std::pair<KEY_T, VALUE_T> &p2)
{
return p1.second < p2.second;
});
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在std::unorderd_map( 替换为 ) 上使用上述函数std::map时std::unordered_map,我收到一个Segmentation fault (core dumped).