草庐IT

map_region

全部标签

c++ - OOP 中的正确方法。游戏示例。 Player::walk 还是 Map::playerWalk?

假设有一场比赛。有一个map类和一个玩家类。map存储字段,字段存储玩家。这将是在OOP中做的正确方法。什么时候负责玩家行走的方法是Player::walk或Map::playerWalk?关于第一个例子(Player::walk),它似乎是正确的做法,在现实生活中也是如此——它的玩家走路,但是它必须通过map实例访问目标字段,检查它是否可以走到那里,从开始字段中删除它并在目标字段中添加它,我的印象是Player会“知道太多”。 最佳答案 最终这是一个设计问题,两者都可以很好地适应OOP范例。我倾向于将方法放在语义上最有意义的类上。

35 | 并发安全字典sync.Map (下)

我们在上一篇文章中谈到了,由于并发安全字典提供的方法涉及的键和值的类型都是interface{},所以我们在调用这些方法的时候,往往还需要对键和值的实际类型进行检查。这里大致有两个方案。我们上一篇文章中提到了第一种方案,在编码时就完全确定键和值的类型,然后利用Go语言的编译器帮我们做检查。这样做很方便,不是吗?不过,虽然方便,但是却让这样的字典类型缺少了一些灵活性。如果我们还需要一个键类型为uint32并发安全字典的话,那就不得不再如法炮制地写一遍代码了。因此,在需求多样化之后,工作量反而更大,甚至会产生很多雷同的代码。知识扩展问题1:怎样保证并发安全字典中的键和值的类型正确性?(方案二)那么

c++ - 如何在 OpenMP 4 中为 std::vector 写入 "target data map"?

我想使用C++和vectors。我有C代码和这样创建的C数组:double*data=(double*)malloc(sizeof(double)*n);double*result=(double*)malloc(sizeof(double)*n);#pragmaomptargetdatamap(tofrom:data[0:n],result[0:n])//loop现在我使用C++vector,我得到:example.cpp:31:41:error:expectedvariablenameoranarrayitem#pragmaomptargetdatamap(tofrom:data[

c++ - 从 std::map 中删除 std::function lambda-wrapped 方法

我正在使用std::function和std::map创建一个回调系统。该映射使用int作为键,值为std::function。我将方法绑定(bind)到这些函数中。我想知道如果我调用map.erase(i),会从内存中删除std::function,还是会发生内存泄漏?下面是一些示例代码:#include#include#includeusingnamespacestd;classTestClass{public:TestClass(int_i,map>&test_map):i(_i){test_map[i]=[&](){this->lambda_test();};};voidlam

c++ - 分配时 unordered_map 更改的顺序

我对这种行为很好奇。我发现分配unordered_map会更改无序映射的内部顺序,而无需任何插入/删除操作:unordered_mapm1;unordered_mapm2;unordered_mapm3;m1[2]="john";m1[4]="sarah";m1[1]="mark";m2=m1;m3=m2;for(autoit=m1.begin();it!=m1.end();++it){coutsecondsecondsecond输出:marksarahjohnjohnsarahmarkmarksarahjohn我知道unordered_map没有维护任何特定的顺序,因为它内部是一个哈

c++ - 如何通过 vector/ map 使用指向对象的多个指针

我有一个关于使用多个指向一个对象的指针的问题。我在vector中有一个指针,在map中有另一个指针。map使用vector来索引对象。示例代码:classThing{public:intx=1;};Thingobj_Thing;std::vectorv_Things;v_Things.push_back(&obj_Thing);std::mapm_ThingMap;m_ThingsMap[v_Things[0]->x]=v_Things[0];//crucialpart像这样互相分配指针是好习惯吗?vector和/或map应该保存地址吗?或者我应该使用指向map指针的指针吗?

c++ - std::unordered_map<int,float> 是否仍然需要散列整数才能得到值?

我想知道是否std::unordered_map仍然必须对给定的整数进行哈希处理才能得到该值,或者直接使用它。我需要每秒多次快速执行此操作,如std::hash不能保证是身份函数,我将如何重新定义它?(显然不使用STL并编写我自己的容器是可能的,但我怀疑我编写的容器是否会更有效率(可能慢得多,慢得多))。谢谢! 最佳答案 Iwouldliketoknowwhetherstd::unordered_mapstillhastohashthegiveninteger是的。Ineedtoperformthisoperationveryfas

c++ - boost::interprocess : cout a string variable when iterating through a map that references an object from a struct

我正在使用boost::interprocess在进程之间共享对象。我有两个文件,一个生成结构对象并将该对象传递到具有int索引的映射中的“server.cpp”;和一个“client.cpp”文件,它检索内存数据并遍历数据,输出到控制台。结构看起来像这样:structmydatao{stringMY_STRING;intMY_INT;};和对象:mydatao;o.MY_STRING="hello";o.MY_INT=45;服务器和客户端都能正确编译。但是出于某种原因,如果我尝试访问客户端中的字符串而不是float或整数,客户端可执行文件会抛出段错误。例如下面的second.MY_I

c++ - Concurrent_hash_map 实现抛出 SIGSEGV

我正在尝试使用tbb的concurrent_hash_map来提高我的应用程序的并发性能。阅读它并根据我的应用程序实现它,但我看到崩溃..因此,我的应用程序是一个多线程应用程序,我在其中存储对,键是char*,值是整数。伪代码如下所示:在.h文件中,typedeftbb::concurrent_hash_maptbb_concurrent_hash;tbb_concurrent_hashconcurrent_hash_table;tbb_concurrent_hash::accessorwrite_lock;tbb_concurrent_hash::const_accessorread

c++ - 将 std::map<int, std::shared_ptr<Base>> 转换为 std::map<int, std::shared_ptr<Derived>> 的最有效安全方法

我们目前存储了几个不同的数据模型集合,如下所示:std::map>>models;字符串映射到一个已知的类型列表,这都是通过序列化处理的。嵌套映射包含“对象ID”和关联(反序列化)std::shared_ptr的集合DataObject是一个基类,我们从中派生出多种类型。我们有一个方法来获取给定类型的所有数据对象:staticstd::map>*getAll(std::stringtype);这只是在给定的“类型”键处返回指向map的指针。今天我遇到了一个代码审查来添加我认为调用UB但似乎起作用的以下内容。这让我有点紧张并寻找有效的解决方案:templatestaticstd::map