草庐IT

world-map

全部标签

c++03: std::map 中内置类型的默认构造函数

我一直以为下面的代码std::maptest;std::cout会打印随机值,因为它会在map中创建统一值。然而,事实证明,创建的int实际上总是初始化为零,并且标准内置类型在某些情况下也被初始化为零。问题是:何时对标准类型(int/char/float/double/size_t)执行零初始化?我很确定,如果我在不知名的地方声明inti;,它将包含随机数据。附言问题是关于C++03标准的。这个问题的原因是,现在我不再确定何时必须为int/float/size_t等内置类型提供初始化,或者何时可以安全地省略它。 最佳答案 标准容器(

c++ - 在 hashmap/unordered_map 中,当 value 已经包含 key 时,是否可以避免数据重复

给定以下代码:structItem{std::stringname;intsomeInt;stringsomeString;Item(conststd::string&aName):name(aName){}};std::unordered_mapitems;Item*item=newItem("testitem");items.insert(make_pair(item.name,item);项目名称将在内存中存储两次-一次作为项目结构的一部分,一次作为map条目的键。是否可以避免重复?对于大约100M的记录,这种开销变得巨大。注意:我需要在Item结构中包含名称,因为我使用hash

TQ15EG开发板教程:使用vivado2023.1建立hello world工程

1:打开软件建立工程2:使用vivado创建设计模块并生成bit文件3:导出硬件平台,使用vitis建立工程4:使用vitis创建应用程序项目5:硬件设置与调试1:打开软件建立工程打开VIVADO2023.1创建一个新的工程输入项目名称和地址,下面那个选项为是否使用项目名称新建一个文件夹,我这里已经建了一个hello_world文件夹,所以不勾选选择RTL工程,勾选不添加文件搜索15eg,选择xqzu15eg-ffrb1156-2-i。这一步选择芯片型号,一定要选择和自己开发板相匹配的型号(本实验使用的开发平台是XCZU15EG对应的芯片型号xqzu15eg-ffrb1156-2-i)完成创建

c++ - 带公历日期的 unordered_map

我想将boost::gregorian::date存储为boost::unordered_map的键,但我无法编译代码,因为它缺少适当的哈希这个类的函数。一个简单的解决方案是转换为std::string并存储它。我可能想避免使用此解决方案,因为使用字符串非常昂贵。我试图找到一些将日期导出为数字的函数,但我只能读取day()函数,我不确定这是否真的合适。也许我可以计算出我的日期和引用日期之间的天数?有没有其他更好的方法来存储日期或将日期导出为数字的函数? 最佳答案 为其实现哈希函数:namespaceboost{namespacegr

c++ - 这是正确的行为吗? std::map 迭代器失效

#include#includeintmain(intargc,char**argv){std::mapmap;map.emplace(1,1);autoreverse_iter=map.rbegin();std::coutfirstsecondfirstsecond打印出来:1,12,2根据标准,这真的应该发生吗?我没有接触reverse_iter但它指向的值正在改变。我认为std::map中的迭代器应该可以安全地防止插入。然而,它似乎决定reverse_iter不再指向我告诉它的值,而是指向“此时map末尾发生的任何事情”。更新:更多信息,以防万一:前向迭代器似乎不会发生这种情况(

c++ - 为什么 vector::operator[] 的实现方式与 map::operator[] 不同?

std::vector的operator[]是否有任何理由只返回一个引用而不是插入一个新元素?vector::operator的cppreference.com页面显示hereUnlikestd::map::operator[],thisoperatorneverinsertsanewelementintothecontainer.map::operator[]的页面says"Returnsareferencetothevaluethatismappedtoakeyequivalenttokey,performinganinsertionifsuchkeydoesnotalreadye

c++ - std::map 的用途是什么?

谁能解释一下我从这个使用std::map的简单程序中得到的输出。请注意,我将p插入到map中,但没有插入q但它说它找到了它们,而且还说map中只有1个元素!#include#includestructscreenPoint{floatx=0,y=0;screenPoint(floatx_,floaty_):x{x_},y{y_}{}};booloperatorpositions;intmain(intargc,constchar*argv[]){autop=screenPoint(1,2);autoq=screenPoint(2,1);positions.emplace(p,3);au

c++ - 当键可能不存在时,如何返回对对象的引用(来自 unordered_map)?

假设我有一个对象:classObject{public:Object(std::vectorstuff){}}这些对象中的每一个都只能从类Foo访问:classFoo{public:std::unordered_map_objects;boolgetObjectForId(constint&objectId,Object&rep){boolfound=false;std::unordered_map::const_iteratorgot=_objects.find(objectId);if(got!=_objects.end()){found=true;rep=_objects[obj

c++ - 在 std::map 中存储结构实例

我正在尝试将一些结构映射到其他一些实例,如下所示:templateclassComponent{public:typedefstd::mapinstances_map;instances_mapinstances;Component(){};Tadd(EntityIDid){T*t=newT();instances[id]=*t;return*t;};};然后我这样使用它:structUnitInfos{intowner_id;inthealth;floatx,y;};classLogicComponent:publicComponent{};问题是当它稍后检索数据时,像这样:comp

c++ - 使用 C++0x 的 unordered_map

我正在使用unordered_map其中包括:#include程序编译如下:g++Test.cc-std=gnu++0x-otest我在使用unordered_map吗?TR1或C++0x的。还是两者相同? 最佳答案 我相信gcc将他们的TR1header放在中,所以你应该得到C++11版本。但它们非常相似。 关于c++-使用C++0x的unordered_map,我们在StackOverflow上找到一个类似的问题: https://stackoverflo