草庐IT

map_coordinates

全部标签

c++ - 使用 STL map 搜索位于矩形区域中的点?

我有很多x,y点,每个x,y点都有一些与之相关的额外数据。我将把这些额外数据存储在一个结构中。我的应用程序要求给定任何一个点,我必须找出在该点周围的矩形区域内还有多少其他点(该点位于矩形的中心)。我想到的一个逻辑是将所有x点存储为mapA中的键,将所有y点存储为另一个mapB中的键。映射A将x作为键,y值作为值。MapB将以y作为键,将关联的结构作为值。这样,如果给定的点是(10.5,20.6),我可以使用upper_bound(10.5+RECTANGLE_WIDTH)和lower_bound(10.5-RECTANGLE_WIDTH)找到位于矩形内的x值范围以及对应的y值,找出y值

C++ unordered_map 导致编译时错误

我有以下内容:#include#include#includeusingnamespacestd;classCTest{//Propertiespublic:unordered_map>Layout;//Methodspublic:CTest();~CTest();};CTest::CTest(){Layout["XYZ"]=make_tuple(0,1);}CTest::~CTest(){//Donothing}intmain(intargc,char*argv[]){CTestTest;return0;}编译这个简单的程序会出现以下错误:errorC2678:binary'==':

c++ - 如何通过迭代器将 map<string, int> push_back 到 vector<map<string, int>> 中?

我目前正在学习AcceleratedC++(Koening/Moo)这本书,但我在其中一个练习中遇到了问题。任务是编写一个程序,将一些单词序列作为输入,然后将其存储在map中。.字符串是输入的单词和关联的int是每个单词出现的次数。然后,您必须根据单词出现的次数对单词进行排序;也就是说,按值而不是键。您不能按值对映射进行排序,因此我尝试将元素复制到vector中,我打算使用谓词对其进行排序。不幸的是,我得到的只是一个充满g++错误的屏幕。它们似乎源于同一个地方-将我的map的元素放入我的vector中,我尝试这样做:intmain(){mapcounters;cout>word)++c

c++ - 我如何为 tr1::unordered_map 定义一个不绑定(bind)模板参数的宏/typedef/etc?

这可能是个有点傻的问题,但我不得不问。我正在尝试在C++中使用unordered_map类,但不是每次都将其作为tr1::unordered_map引用,我只想使用关键字hashMap。我知道typedeftr1::unordered_maphashMap有效,但这种修复了键的数据类型和对应于hashMap的值,而我希望有更多类似以下内容:#definehashMaptr1::unordered_map我可以根据需要定义键和值的数据类型,但这不起作用。以前有人遇到过这个问题吗?谢谢 最佳答案 这是C++11之前的C++所缺少的东西。

Map和Set(哈希表)

目录map:map说明:Map.Entry的说明:,v>Map的常用方法:演示:注意:TreeMap和HashMap的区别 Set:常见方法说明:注意:TreeSet和HashSet的区别 哈希表:冲突:冲突-避免:冲突-避免-负载因子调节:冲突-解决:冲突-解决-闭散列:冲突-解决-开散列/哈希桶:结语:map:map说明:Map是一个接口类,该类没有继承自Collection,该类中存储的是结构的键值对,并且K一定是唯一的,不能重复。Map.Entry的说明:Map.Entry是Map内部实现的用来存放键值对映射关系的内部类,该内部类中主要提供了的获取,value的设置以及Key的比较方式

c++ - 一群士兵一起在网格 map 上移动

我正在制作RTS游戏,整个地形就像网格(具有x和y坐标的单元格)。我有几组士兵(军事单位),我想将他们从A点发送到B点(A点和B点之间是障碍物)。我可以使用A*算法解决一名士兵的问题,这不是问题。如何实现我的这群士兵永远在一起?(我注意到几个极端情况,当他们分开并以不同的方式到达同一目的地点时,我可以选择小组的领导者,但我不需要那些士兵去同一个牢房而是由领导者,例如右边的一对,一对如果可能,在左侧)。过去有人解决过类似的问题吗?对算法修改有什么想法吗? 最佳答案 你想要一个蜂群算法,让群中的领头羊跟随A*方向,而其他领头羊跟随领头者

c++ - 为什么我机器上的 hash_map 和 unordered_map 非常慢?

我用这段代码测试了它们(在VisualStudio2010sp1上):#include#include#include#include#includeintmain(){clock_ttime;intLOOP=(1my_map;std::unordered_mapmap_unordered_map;std::hash_mapmy_hash_map;time=clock();for(inti=0;i!=LOOP;++i){my_map[i]=i;}std::cout结果很奇怪:在调试中:map:0.289无序map:10.738HashMap:10.58按任意键继续。..在发布中:map

c++ - 'mapped_type' std::map 错误的初始化没有匹配的构造函数

我有一个名为“Card”的类,我试图将它的一些对象存储在std::map中卡片.hpp:classCard{public:enumValueType{NOVALUE,ACE};enumFaceType{NOFACE,CLUBS};Card(constValueType&_value,constFaceType&_face);Card(constCard&_card);private:ValueTypem_value;FaceTypem_face;};以下是我存储和访问它的方式:甲板.hpp:#includeclassCard;classDeck{public:Deck();std::s

c++ - 是在索引一个新的 map 元素并将读取它的东西分配给它未定义的行为,还是只是未指定的?

回答后thisquestion,关于所讨论的代码是否为未定义行为的问题进行了长时间的讨论。这是代码:std::mapword_count;word_count["a"]=word_count.count("a")==0?1:2;首先,众所周知,这至少是未指定的。结果因首先评估作业的哪一侧而异。在我的回答中,我遵循了四个结果案例中的每一个,首先评估哪一方的因素以及该元素是否在此之前存在。还有一个简短的表格出现了:(x=0)=(x==0)?1:2;//startedas(x=0)=(y=="a")?1:2;//changedto我声称它更像这样:(x=0,x)=(x==0)?1:2;//c

c++ - 反转 map<string, int> 到 vector<vector<string>> 的映射

以我的priorquestion为基础,我有一个单词的映射及其计数存储在map中.我想反转它,以便将所有具有相同计数的单词组合在一起。我的解决方案是使用vector>.第一个vector的索引是计数,第二个vector是单词的集合。阅读上一个问题的答案后,这里是我一直在努力工作的内容:vector>sorted_words;for(map::const_iteratorit=counters.begin();it!=counters.end();++it){coutfirstsecondit->second&&sorted_words[it->second].size()>0){cou