c++11标准下boost1.76版本中 boost::string_view 能当做 std::unordered_map的key
时间: 2023-12-06 15:39:39 浏览: 339
是的,C++11标准下的Boost 1.76版本中,boost::string_view可以作为std::unordered_map的key。这是因为boost::string_view的底层实现是一对指针,它不拥有字符串数据,只是对字符串进行了视图封装。因此,boost::string_view可以很高效地作为std::unordered_map的key。
使用boost::string_view作为std::unordered_map的key时,需要注意以下几点:
1. 需要包含<boost/utility/string_view.hpp>头文件。
2. std::unordered_map的哈希函数需要使用boost::hash<boost::string_view>。
3. std::unordered_map的相等比较函数需要使用boost::string_view::operator==()。
下面是一个示例代码:
```c++
#include <boost/utility/string_view.hpp>
#include <unordered_map>
int main()
{
std::unordered_map<boost::string_view, int, boost::hash<boost::string_view>> my_map;
my_map.emplace("hello", 1);
my_map.emplace("world", 2);
return 0;
}
```
在上面的示例代码中,我们使用boost::string_view作为std::unordered_map的key,并使用boost::hash<boost::string_view>作为哈希函数。在插入元素时,我们使用std::unordered_map的emplace函数。
阅读全文