草庐IT

Unordered

全部标签

c++ - 不区分大小写的 STL 容器(例如 std::unordered_set)

制作std::unordered_setCASE-INSENSITIVE容器的最短、最跨平台的方法是什么?my_set.insert("Apples");my_set.insert("apples");//Insertdoesn'toccurbecauseofduplicateitem我知道STL提供了Hash和Pred。Hash应该是什么?Pred应该是什么?如果它们不是内置的,那么请提供它们的代码以及它们的使用示例(即我如何声明std::unordered_set?)。由于批评,我将详细说明我正在尝试做的事情。我需要一个高性能的透明HTTP代理服务器,它所做的其中一件事就是快速查找

c++ - std::unordered_map<std::String, myClass*> - std::unordered_map::erase() 是否调用 myClass 的 DTor?

假设我有一些unordered_map指向类实例的指针,从该映射中删除一个对象是否也会删除该实例?(改写问题:)如果我想删除那个实例,哪个版本是正确的?if(it!=map.end()){deleteit->second;map.erase(it);}或者只是if(it!=map.end())map.erase(it);?更新:根据很多人的建议,我转而使用shared_ptr,效果很好! 最佳答案 不,因为这是标记的C++11,你应该首先使用std::unique_ptr/std::shared_ptr来管理你的对象指针,例如std

c++ - 在插入新键时保持 unordered_map 的顺序

我使用以下代码将元素插入到unordered_map中:myMap.insert(std::make_pair("A",10));myMap.insert(std::make_pair("B",11));myMap.insert(std::make_pair("C",12));myMap.insert(std::make_pair("D",13));但是当我使用这个命令打印key时for(constautoi:myMap){cout它们的顺序与我插入的顺序不同。是否可以保留顺序? 最佳答案 不,这是不可能的。std::unorder

c++ - unordered_map 元素被删除

我将{string,MyStruct}对象插入到unordered_map中,稍后遍历unordered_map并选择删除该元素。但是,在删除元素之前,我有一个断言显示unordered_map为空。这是我的插页:my_umap.insert(std::make_pair(key.toString(),my_struct));该结构包含一个记录其插入时间的成员。然后我定期检查map并删除在unordered_map中时间过长的元素:for(autoit=my_umap.begin();it!=my_umap.end();++it){MyStruct&myStruct=it->secon

c++ - mac c++ 编译器找不到 <tr1/unordered_map>

我想今天的问题是“哪个”c++编译器是mac上的默认编译器?如果我执行xcrun-findc++它说它在/Applications/Xcode.app/etc...中。当我在Xcode目录中搜索tr1/unordered_map时,它就在那里。所以我很困惑。为什么我会收到构建错误提示fatalerror:'tr1/unordered_map'filenotfound? 最佳答案 简答:用-stdlib=libstdc++调用clang++,和tr1header将在那里。长答案:你的错误和2套C++包括的原因是macOS/Xcode有

c++ - std::unordered_map 和重复键

我正在使用STLunordered_map,但我似乎无法使用计数方法。这是我的程序:typedefunordered_mapMymap;intmain(){Mymapm;m.insert(Mymap::value_type('a',1));m.insert(Mymap::value_type('b',2));m.insert(Mymap::value_type('c',3));m.insert(Mymap::value_type('b',4));m.insert(Mymap::value_type('b',5));coutunordered_map的文档说unordered_map::

c++ - 只要集合不变,迭代器是否以相同的顺序迭代 boost::unordered_set 或 boost::unordered_map?

只要set或map不变,迭代器是否以相同的顺序遍历boost::unordered_set或boost::unordered_map? 最佳答案 HashMap的某些实现会将散列到同一容器的项目重新排序,将最近访问的项目放在列表的前面,作为优化。这将改变顺序。我不知道boost::unordered_map会这样做,但将来您可能最终会用std::unordered_map代替,这将完全取决于您的编译器的实现。 关于c++-只要集合不变,迭代器是否以相同的顺序迭代boost::unorde

c++ - 使用对象引用作为 std::unordered_map 中的键

我想知道是否可以在C++的unordered_map容器中使用对象引用作为键。#includeclassObject{intvalue;};structobject_hash{inlinesize_toperator()(constObject&o)const{return0;}};std::unordered_mapmap;在尝试编译这个简单的片段时,我遇到了一些关于方法重定义的错误:在libc++中使用clang/usr/include/c++/v1/unordered_map:352:12:error:classmembercannotberedeclaredsize_toper

c++ - 如何拥有一个 unordered_map,其中值类型是它所在的类?

这段代码:classFoo{std::unordered_mapx;};给我一​​个错误:/usr/include/c++/4.7/bits/stl_pair.h:94:11:error:'std::pair::second'hasincompletetypefoo.cpp:4:7:error:forwarddeclarationof'classFoo'然而,这段代码编译得很好:classFoo{std::vectorx;};这是库/编译器错误吗? 最佳答案 C++标准对各种智能指针规定模板参数允许为不完整类型。2017及以后版本的

c++ - 在 Visual C++ 和 clang 中使用 C++11 unordered_set

我正在尝试在跨平台C++应用程序中使用std::unordered_set。它在Windows下的VisualC++中的编译和工作非常好,但在MacOSX下的clang上会产生致命的编译错误。我想知道为什么会发生这种情况,以及使它正常工作的正确方法是什么。示例代码:////Clangbuildcmdline://$clang++./set.cpp-Wall-Werror-Wfatal-errors-std=c++11-stdlib=libc++-oset.out//#include#includestructPoint{intx,y;Point(intx=0,inty=0){this-