相关疑难解决方法(0)

避免std :: map :: find()的关键构造

假设我有一个std::map<std::string, int>.std::string可以与没有std::string临时值的C字符串(const char*)进行比较.但是,map::find()似乎迫使我构造一个临时的std::string,这可能需要一个内存分配.我该如何避免这种情况?从概念上讲,它很容易,但STL似乎可以防止这种情况发生.

#include <map>

int main()
{
    std::map<std::string, int> m;
    m.find("Olaf");
}
Run Code Online (Sandbox Code Playgroud)

c++ c++11

21
推荐指数
1
解决办法
2153
查看次数

异构查找比较器

我们在C++ 14中进行了异构查找.我想知道为什么map,set等的默认比较器没有改为less <>.如果没有这种改变,平均C++用户会完全错过这个功能,并且在set <string>中查找const char*时的性能损失仍然存在.我在公司的代码库中看到过这种模式的次数太多了.甚至MS表明这是其GoingNative视频中的一个真正的性能瓶颈.我可以怀疑代码的破坏是问题,但我不知道它是如何发生在已经在c ++ 98/11中工作的代码

c++ c++14

6
推荐指数
1
解决办法
1208
查看次数

标签 统计

c++ ×2

c++11 ×1

c++14 ×1