草庐IT

C++,基于第二个 iter 的 Order map 内容

我有如下mapstringword;intoccurance;std::map>map;map[word]["count"]=occurance;使用迭代器映射输出。for(autoouter_iter=map.begin();outer_iter!=map.end();++outer_iter){for(autoinner_iter=outer_iter->second.begin();inner_iter!=outer_iter->second.end();++inner_iter){std::coutfirstsecond我想通过排序inner_iter->second值来显示m

c# - 寻找无边 map 的路径算法

我有基本上是类似墨卡托投影的2D世界地图,(如果你向西走的时间足够长,你最终会在开始的地方以东)我的问题是:您是否也可以使用A*来计算这些类型map上的路径?我想不出任何你不能的理由(我想你会简单地表示边缘map节点,这样北,南,东,周三,“边界”节点简单地连接到对面边)。在此先感谢,如果有人以前见过类似的东西或者可以给我一些提示,我将不胜感激。 最佳答案 寻路算法并不真正关心map的全局拓扑。唯一棘手的部分是为A*获得一个好的估计器,但如果您的map确实是3d空间中的表面并且步长成本是步长,则使用3D距离应该没问题。您的map可能

c++ - 从文本文件加载 std::map

这是一件非常简单的事情,所以我想让它尽可能简单。我想要的只是从文件中加载一堆键值对,并将它们填充到map中。我不太关心文本的结构,只要它易于阅读即可。我现在拥有的是:带有xsd生成代码的xml(矫枉过正)ProtocolBuffer(也矫枉过正)INI样式文本文件我喜欢INI文件的语法,但我不想为此编写解析器。在我看来,我会做很多人在我之前做过的事情。难道没有某种库可以读取像这样的简单结构化文件吗? 最佳答案 既然您似乎想要尽可能简单的东西,我将根据您的map内容建议一些可能有效也可能无效的非常简单的方法。如果您的map数据值是包含

c++ - 理解 std::map::find

我正在尝试学习如何将std::map与函数一起使用。我对std::map::find在这方面的工作方式有点困惑。这是一个简单的代码,其中我将Lambda函数与map一起使用。autoLambda=[](constint&a,constint&b){coutexpt(Lambda);expt[1]=2;expt[10]=12;autosearch1=expt.find(1);autosearch10=expt.find(10);if(search1!=expt.end()){std::coutfirstsecond这是我得到的输出:InsidelambdaInsidelambdaInsi

c++ - Boost 多索引容器与基于 std::unordered_map( map 的 map )的多级映射容器

我最近发现了boost::multi_index_container,我很好奇他的性能与我自己实现的基于多级映射的类似容器的比较,定义为:typedefintData;typedefuint64_tMainKey;typedefuint64_tSecondaryKey;typedefstd::unordered_mapSecondaryMap;typedefstd::unordered_mapPrimaryMap;键的顺序并不重要。快速查找很重要,为此我使用了类似的东西://findprimaryKey=10andsecondaryKey=30PrimaryMapm;....autoi

c++ - 无需默认构造函数即可插入或更新到 unordered_map

我有一个std::unordered_map,我想向其中添加一个键值对。如果该key尚不存在,那么我希望它添加给定的值。如果key已经存在,那么我希望更新值。这里的标准建议似乎是使用operator[]。但这要求映射的值类型是可默认构造的。我希望避免提供默认构造函数。我该怎么办? 最佳答案 您应该使用insert_or_assign(C++17)如cppreference所示在这种情况下你不需要有默认的可构造对象:insert_or_assignreturnsmoreinformationthanoperator[]anddoesn

c++ - 如果有插入/删除/重新哈希操作,unordered_map 是否复制/释放包含的对象?

我想在unordered_map中存储小对象,只是想知道如果有任何插入/删除/重新哈希操作,它是否可以复制/释放包含的对象?我认为unordered_map使用链接列表来存储键/值对,它不应该需要复制/释放像vector这样的对象来重新分配内存。 最佳答案 C++11标准:§23.2.5/8Theelementsofanunorderedassociativecontainerareorganizedintobuckets.Keyswiththesamehashcodeappearinthesamebucket.Thenumbero

c++ - 我如何找出 std::map 方法可以抛出哪些异常?

我想在使用std::map(C++)方法以及使用boost::unordered_map方法时处理异常情况。但是,查看方法文档(例如:insert)并没有提供我可以捕获的异常列表。 最佳答案 查看好的文档:如果您不确定那么-最终-标准,但是例如http://en.cppreference.com/w/cpp/container/map/insert可能更方便,并且有一个异常(exception)标题涵盖大多数变体(希望有一天会完成)。您不可能找到比boost站点在线文档更好的boost文档。如果好的引用资料没有记录异常,通常是因为该

c++ - 制作一个以坐标为键的 std::map

创建一个以坐标为键的std::map似乎是不可能的。当两个坐标的(x+y+z)相同时,map将覆盖前一个。示例:map[Coordinate(1,0,0)]=object1;map[Coordinate(0,1,0)]=object2;map[Coordinate(0,0,1)]=object3;这将导致有一个包含1个元素的std::map,其中包含object3作为值和Coordinate(0,0,1)作为键。我怎样才能防止这种情况发生,以便它包含所有值?#pragmaoncestructCoordinate{doublex,y,z;Coordinate(doublex,double

c++ - 在 std::set 或 std::map 的键中使用 weak_ptr 是否安全

今天有很多关于std::weak_ptr和std::owner_less以及它们在关联容器std::set和std::map。有许多帖子指出在std::set中使用weak_ptr是不正确的,因为如果弱指针过期,它将是未定义的行为。这是正确的吗? 最佳答案 原因之一std::owner_lessexists是为了提供这种排序,并在存在过期弱指针的情况下保证其安全。我的逻辑是一、std::owner_less的定义operator()definesastrictweakorderingasdefinedin25.4undertheeq