草庐IT

MAP_SIZE

全部标签

分配大型静态std :: unordered_map导致堆栈溢出

我正在创建一个静态std::unordered_map如下:auto*__epsgMap__=newstd::unordered_map({{3819,CRS::Info("HD1909","+proj=longlat+ellps=bessel+towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408+no_defs")},{3821,CRS::Info("TWD67","+proj=longlat+ellps=aust_SA+no_defs")},{3824,CRS::Info("TWD97","+proj=longlat+ellps=G

c++ - size_t 和 __w64、time_t 和 __int64 是如何工作的?

我不是C或C++的老手。我不知道time_t是如何定义和设计的。几个帖子,例如:Whatisultimatelyatime_ttypedefto?Whatissize_tinC?Differencebetweensize_tandstd::size_t但是这些帖子只说明什么是time_t或size_t。它没有明确说明time_t或size_t是如何以及在何处定义和声明的。我正在使用WIN8VS2012ExpressC++。我搜索了库,发现size_t是在crtdefs.h中定义的,而不是cstddef。为什么需要size_t、time_t这样的类型?我们可以让sizeof只返回unsi

c++ - 使用 map 的 Trie 实现

实现Trie数据结构的简单方法是使用std::map.如果我使用它会发生什么错误。我需要序列化和反序列化Trie。所以节点中的每个映射都是AVL树。也许我会有开销?但是在map中我可以更快地搜索,如果我使用列表。templatestructNodeTrie{std::map`boolisWord;T&val;}; 最佳答案 我喜欢你的想法。尝试是重要的数据结构,我对map作为高效容器有愉快的体验。只是一些评论:如果您的编译器支持它,您可以通过为每个节点单独分配来避免浪费内存。templatestructNodeTrie{NodeTr

c++ - 通过 && 在 std::vector push_back() 和 std::map operator[] 中获取参数

这个问题在这里已经有了答案:Whatismovesemantics?(11个答案)关闭9年前。我在std::vector::push_back()实现中发现了这个:voidpush_back(_Ty&&_Val){//somecodehere}这在std::mapoperator[]实现中:mapped_type&operator[](key_type&&_Keyval){//somecodehere}为什么_Val和_Keyval是按引用方式取的?通过引用引用的方式进行论证是如何工作的?与引用引用相比,这种方法有什么好处?附言这不是逻辑上的“与”,我明白这一点。

c++ - 未初始化的值由堆分配 : Unordered_map 创建

解决方案:我可以有很大的字符串,然后我必须为它们保留内存。我在哈希表中使用char指针而不是使用字符串,因此我为我的哈希表键保留了适当的内存。问题:如果问题已经提出,我很抱歉,但我找不到任何对我有帮助的答案。我有以下代码:编辑(Valgrind问题函数的主循环)i=0;wordPos=0;for(;it!=end;++it,i++){//Iwanttoignorethiselementonpurposeif(i==1)continue;boolisscript;stringtag(it->tagName());convertToLower(tag);if(it->isTag()==1)

C++总结(7):STL无序容器之unordered_set、unordered_map、unordered_multiset、unordered_multimap详解

前两节介绍了STL中的顺序容器和关联容器,本节来介绍一下无序容器。无序容器与关联容器类似,但是关联容器是顺序排序的,而无序容器实现了未排序(哈希)的数据结构。文章目录1unordered_set2unordered_map3unordered_multiset4unordered_multimap1unordered_set无序集合(unordered_set)是一种使用哈希表实现的无序关联容器,其中键被哈希到哈希表的索引位置,因此插入操作总是随机的。无序集合上的所有操作在平均情况下都具有常数时间复杂度O(1),但在最坏情况下,时间复杂度可以达到线性时间O(n),这取决于内部使用的哈希函数,但

c++ - 在 C++ 中初始化静态 std::map<int, unique_ptr<int>>

这是一个与此post类似的问题.我认为最有前途的答案与模板化静态初始化有关。这是该答案的类(class):templateclasscreate_map{private:std::mapm_map;public:create_map(constT&key,constU&val){m_map[key]=val;}create_map&operator()(constT&key,constU&val){m_map[key]=val;return*this;}operatorstd::map(){returnm_map;}};用法:std::mapmymap=create_map(1,2)(

c++ - 处理 map 键中指向值的常量

我有以下代码:#includeusingnamespacestd;structA{};mapdata;intget_attached_value(constA*p){returndata.at(p);}voidreset_all(){for(constauto&p:data)*p.first=A();}我的问题是,当我在data类型中注释和取消注释const时,此代码因类型错误而失败。有什么方法可以在不使用const_cast并且不丢失get_attached_value中的const的情况下解决这个问题? 最佳答案 问题似乎出在p

c++ - C4244 : '+=' : conversion from 'std::streamsize' to 'size_t' , 可能丢失数据

我已将我的VC++项目从VS2008迁移到VS2013并收到一些警告,例如:C4244:'+=':conversionfrom'std::streamsize'to'size_t',possiblelossofdata.如何解决这些类型的警告? 最佳答案 在MSVC2013中std::streamsize是:typedef_Longlongstreamsize;typedef_LONGLONG_Longlong;#define_LONGLONG__int64size_t是:typedefunsigned__int64size_t;因

c++ - 具有负值的 size_t 算术

我被要求复制一份std::string在作业中,我在执行substr时遇到问题功能。在老师给我们的一组测试中,有一个测试是length等于-1.矿山申报substr是:Cadenasubstr(size_tstart,size_tlength)const;我(认为)size_t会阻止传递负值。问题是在定义中我检查了size()(假设tam_与size()相同):if(tam_在我的系统中-1在unsigned是18446744073709551615,因此,例如假设开始是9和tam_是10.我希望:10这样抛出异常,但实际上我得到了10这是错误的,不会抛出异常。随着函数的继续,它分配了