草庐IT

c++ - 在 SDL 中打印键的名称

我的SDL程序正在返回所有键都相同的内存地址,我正在尝试打印键的名称,即如果用户按下“F”键,控制台输出“F”。我将如何着手编辑我的代码以实现此目的?voidGame::handleEvents(){SDL_Eventevent;if(SDL_PollEvent(&event)){switch(event.type){caseSDL_QUIT:g_bRunning=false;//SDL_Quit();break;caseSDL_KEYDOWN://thisisthelinethatisnotworkingasexpected.std::cout 最佳答案

c++ - unordered_map 相同键的迭代顺序

当遍历std::unordered_map时,STL不保证考虑哪个特定元素顺序。我的问题是关于具有相同键的元素的顺序,我用不同的编译器尝试过,如果它们具有相同的键,我总是一个接一个地收到(下面的示例)。我搜索了它,但找不到。它是在标准中的某处提到的还是依赖于实现的?unordered_multimapumap;umap.insert({30,9});umap.insert({10,1});umap.insert({20,5});umap.insert({30,8});umap.insert({20,4});umap.insert({10,2});for(autop:umap)cout输

c++ - 使用以位集为键的 map 时出现问题

我正在尝试使用bitset作为键在C++中创建一个map。但是编译器会生成以下错误消息Infileincludedfrom/usr/include/c++/4.6/string:50:0,from/usr/include/c++/4.6/bits/locale_classes.h:42,from/usr/include/c++/4.6/bits/ios_base.h:43,from/usr/include/c++/4.6/ios:43,from/usr/include/c++/4.6/ostream:40,from/usr/include/c++/4.6/iostream:40,fro

C++ std::map,键的旋转

我需要在map中实现类似“第一键轮换”的功能。对问题的更详细的解释。有一张map:std::maptest;插入了以下元素:test[0.5]=15;test[1]=20;test[2.3]=12;test[3.7]=18旋转算法可以重写为:a]记住map中的第一个元素(key最低的元素):rem_el=map[0]//记法b]从map中删除第一个元素c]为map中所有剩余元素设置新键:map[i].key=map[i].key-rem_el.keyd]使用新键将记住的键添加到map:最后一个键和记住的键的总和test[rem_el.key+test[n-1].key]=rem_el.

c++ - 如何更新特定键的 QHash 值?

我在C++中使用QHash来存储一些简单的键值对。在我的例子中,键是一个整数,值也是。要向散列添加新的键/值对,这是我的语法:QHashmyhash;intkey=5;intvalue=87;myhash.insert(key,value);qDebug()如何更新现有的键值对?语法是什么? 最佳答案 T&QHash::operator[](constKey&key)Returnsthevalueassociatedwiththekeyasamodifiablereference.您可以执行以下操作:myhash[5]=88;根据文

c++ - 使用 C 类型 uuid_t 作为 std::map 中的键的最佳方法是什么?

这是在map中提供唯一键的适当方式吗?换句话说,key是由uuid中包含的唯一值生成的,还是由指向uuid_t结构的指针生成的?一个附带的问题,当我不关心容器内按键的排序时,是否有更高效的容器?#includeintmain(intargc,char**argv){std::mapmyMap;uuid_tid1;uuid_tid2;uuid_generate((unsignedchar*)&id1);uuid_generate((unsignedchar*)&id2);myMap[id1]=5;myMap[id2]=4;} 最佳答案

c++ - 如何实现具有多个键的快速 map ?

我正在寻找可以执行多个键查找的C++关联映射容器类型。map需要有恒定的时间查找,但我不在乎它是有序的还是无序的。它只需要快速。例如,我想将一堆std::vector对象存储在一个带有int和void*的映射中查找键。int和void*都必须匹配才能检索我的vector。这样的容器已经存在了吗?还是我必须自己动手?如果是这样,我该如何实现?我一直在尝试将一个boost::unordered_map存储在另一个boost::unordered_map中,但我还没有用这种方法取得任何成功。如果没有更简单的方法,也许我会继续使用Pershing这种方法。 最佳答案

c++ - std、boost 或其他具有隐式键的哈希表容器的广泛实现

如果我理解正确,std::map和std::unordered_map都会显式存储键(存储键/值对)。是否有其他一些现成可用的容器(std、boost或其他广泛实现)不会存储key,而是允许使用函数(即使用隐式key?)从存储的值中派生key。 最佳答案 std::set或std::unordered_set,具有适用于存储值类型的散列和/或比较函数。但是,查找将通过存储的值类型而不是键来完成,因此您还需要一种方法来根据键构造一个临时对象。 关于c++-std、boost或其他具有隐式键

c++ - 将值快速插入到以递增整数为键的映射中?

map::insert(iteratorposition,constvalue&k)的效率可以通过在参数位置提供适当的值来显着改善。如果我使用整数作为键,并且每次插入都使用比之前插入的所有键都大的数字完成,我可以加快::insert的速度吗?给出::end()时的操作map的迭代器?类似于:myMap.insert(myMap.end(),make_pair(next_number,myValue));哪里myMap类型为map和next_number是一个每次递增的大整数。编辑:这个问题的答案可能会有所不同,具体取决于数据是否存储在map中。密集与否(见下面的讨论)。所以,让我们从两

c++ - 从 std::map 值获取键的有效方法

我有一张map如下:std::mapmapobj;mapobj["one"]=1;mapobj["two"]=2;mapobj["three"]=3;当输入为值时如何获取key例如:输入:1输出:一个注意:在我的例子中,值是唯一的 最佳答案 一对一映射实际上非常简单,最快的方法可能是维护两个映射,每个方向一个。如果它不是一对一的,它会变得更加复杂,因为您需要提供一种方法来获取值或键的集合,而不是单个值或键。幸运的是,您只有一对一的要求。其中一个映射是您现在拥有的映射,另一个映射会将值映射到给定的键,所以两者都是:std::mapfo