【发布时间】:2020-07-26 12:03:49
【问题描述】:
我在代码中大量使用异常,所以我更喜欢使用at()而不是find()来查找元素,但我刚刚发现at()似乎不支持std::string_view,例如:
#include <map>
#include <iostream>
std::map<std::string, int, std::less<>> map{
{"one", 1},
{"two", 2},
};
const char* c = "onetwothree";
int main() {
std::string_view s(&c[3], 3);
std::cout << map.find(s)->second << std::endl;
std::cout << map.at(s) << std::endl; // will not compile
}
那么我可以将at() 与std::string_view 一起使用吗?或者换句话说,at() 可以支持异构查找吗?
【问题讨论】:
-
@Someprogrammerdude 我认为透明比较器(即
less<>)是required 用于异构查找? (至少,对find的调用不会编译。)
标签: c++