草庐IT

std-ranges

全部标签

c++ - 使用 std::map 的 Visual Studio 11 编译时错误

以下代码可以使用gcc-4.5.1编译,但不能在VisualStudio11中编译。#include#includetypedefstd::pair>pairus;intmain(){std::map>x;std::arraytroll={1,2,3,4};x.insert(pairus(1,troll));autoz=x[1];}1现在映射到std::arraytroll.插入效果很好,程序可以编译。但是,一旦我尝试autoz=x[1]->因此试图获得1的数组troll被映射到,程序不编译并出现以下错误:errorC2512:'std::array::array':没有合适的默认构造

c++ - std::is_convertible 用于 type_info

在C++11中,可以通过usingstd::is_convertible确定类型A的变量是否可以隐式转换为类型B.如果你真的知道类型A和B,这很有效,但我只有type_infos。所以我正在寻找的是这样的功能:boolmyIsConvertible(consttype_info&from,consttype_info&to);是否可以在C++中实现类似的东西?如果是,怎么办? 最佳答案 在可移植的C++中做你想做的事是不可能的。可能如果您将自己限制在给定的平台上,则有可能获得部分答案。例如那些遵守ItaniumABI的平台将实现此功

c++ - 使用 std::vector 重新分配的内存取消分配

假设我有VectorA和VectorB是两个std::vector,都已初始化(我的意思是VectorA.size()>0和VectorB.size()>0)如果我这样做:VectorA=VectorB;之前为VectorA分配的内存自动释放? 最佳答案 在调用所有包含对象的析构函数并且vector不再拥有内存的意义上,它被释放。1但实际上,它只是返回到allocator,实际上可能会也可能不会将其返回给操作系统。只要正在使用的分配器中没有错误,就不会造成内存泄漏,如果这是您所关心的。1。正如@David在下面的评论中指出的那样,内

c++ - std::function 绑定(bind)到成员函数

以下代码在VS2012中无法编译classZot{public:intA(){return123;}};int_tmain(intargc,_TCHAR*argv[]){std::functionfn=&Zot::A;return0;}但是,将分配更改为std::functionfn=std::bind(&Zot::A,std::placeholders::_1);有效。有很多在线示例显示了原始语法。C++11规范是否更改了某些内容以禁止使用此语法?作业是否有有效的缩写形式?编辑:编译器错误(针对可恢复性略微编辑)是:1>vc\include\functional(515):error

c++ - std::string::max_size() 作为静态成员

为什么max_size不是std::string的静态成员?这可以编译,但我觉得奇怪的是所有字符串共有的属性只能通过字符串的实例访问:std::size_tmax_size=std::string().max_size();为什么会这样实现? 最佳答案 Whyisn'tmax_sizeastaticmemberofstd::string?因为max_size返回值取决于字符串实例内部使用的分配器实例。 关于c++-std::string::max_size()作为静态成员,我们在Stac

c++ - QtCreator 调试器不显示 std::string 的值

我试图调试我的小词法分析器并遇到了这个问题:QtCreator-Debugger不显示我的std::string-variable的任何内容。我尝试在控制台中对其进行调试,但得到了相同的结果,只是简单的结构信息。我前几天用的那个版本的QtCreator确实显示了字符串的内容。所有其他STL元素,如std::vector、std::map、std::multimap等显示正确的数据,只是std::string类不正确。经过几个小时的谷歌搜索后,我发现了很多描述pretty-print创建的网页,我解决这个问题的非常笨拙的方法并没有帮助。我有什么想法可以摆脱这个错误吗?注意:字符串变量的“

c++ - 等价于 C++ std::set 在 Matlab 中

如何在Matlab中定义具有这些属性的set:独特的元素高效搜索已订购也许没有内置的容器,那么我怎样才能像C++中的std::set一样组合一些东西来获得以上东西呢? 最佳答案 您可以像这样使用Java的HashSet:>>x=java.util.HashSet;>>x.add(1);>>x.add(2);>>x.contains(1)ans=1>>x.contains(3)ans=0>>xx=[2.0,1.0]在评论中有人指出HashSet是无序的。这是完全正确的。我的错!您可以改用TreeSet,它是有序的:>>x=java.u

c++ - 查找抛出 std::out_of_range 的对象

我的一个程序抛出一个std::out_of_range。我知道这样做的原因,我正在某处访问索引为-1的vector。我不知道的是vector的名称(变量名称)和代码中的位置。我的程序产生的错误消息如下所示:terminatecalledafterthrowinganinstanceof'std::out_of_range'what():vector::_M_range_checkzsh:abort(coredumped)./main.xconfig.cfg而由其他人(他也使用g++)的代码生成的错误消息发布在问题C++accessingvector中看起来像这样:Errorforvec

c++ - std::vector 推速?

我正在使用vector来管理我的大型结构数据。但是突然间,当发现vector源代码时,我很惊讶地看到下面的一些代码:inlinevoidpush_back(const_Ty&_X){insert(end(),_X);}//...voidinsert(iterator_P,size_type_M,const_Ty&_X){//////////////////////////////////////////////////////////////iterator_S=allocator.allocate(_N,(void*)0);iterator_Q=_Ucopy(_First,_P,_S

c++ - 从 std::call_once 抛出异常

C++标准对使用抛出异常的函数执行std::call_once(§30.4.4.2/2)作了如下说明:2/Effects:Anexecutionofcall_oncethatdoesnotcallitsfuncisapassiveexecution.Anexecutionofcall_oncethatcallsitsfuncisanactiveexecution.AnactiveexecutionshallcallINVOKE(DECAY_-COPY(std::forward(func)),DECAY_COPY(std::forward(args))...).Ifsuchacallto