草庐IT

接受端

全部标签

c++ - 如何使 C++11 函数采用 function<> 参数自动接受 lambdas

C++11有lambda和std::function,但不幸的是,它们有不同的类型。一个结果是不能直接在高阶函数中使用lambda,例如lisp中的map。例如,在下面的代码中#include#includeusingnamespacestd;templatevectormap(std::functionf,vectorarr){vectorres;for(inti=0;ia={1,2,3};map([](intx)->int{returnx;},a);//notOKautoid_l=[](intx)->int{returnx;};map(id_l,a);//notOK;functio

c++ - 为什么小于运算符接受不同类型的参数而 std::min 不接受?

#includeintmain(){inta=1;longlongb=2;std::cout>Infileincludedfrom/usr/include/c++/4.8/bits/char_traits.h:39:0,>from/usr/include/c++/4.8/ios:40,>from/usr/include/c++/4.8/ostream:38,>from/usr/include/c++/4.8/iostream:39,>fromsum_to.cpp:1:/usr/include/c++/4.8/bits/stl_algobase.h:239:5:note:template

c++ - 接受所有版本的 const/volatile 限定和 & vs && 的类模板特化

我专攻std::common_type适合我的类型。我定义了以下专业:common_type一切都很好。然后有人过来调用std::common_type.如果您传递引用与不传递引用(因为它在类型上调用std::decay),则默认版本的行为相同。但是,它并不遵循std::common_type的非引用版本,我需要它才能正常工作。有没有比必须做这样的事情更好的方法(为简单起见,省略对const的右值引用):common_typecommon_typecommon_typecommon_typecommon_typecommon_typecommon_typecommon_typecomm

C ++功能签名接受LVALUE,RVALUE和RVALUE REF

假设我具有以下功能:print_sutff(conststd::stringstuff){std::cout我可以接受:std::stringstd::string&std::string&&对功能代码的外观没有任何影响。但是,可以通过多种方式调用该功能,我想通过这些方式实现以下行为(或尽可能接近它):autopass="astring";print_sutff(pass);在这里,用户不能使用&amp;&amp;我更喜欢&amp;优先考虑lvaue或者:print_sutff("astring");这里是&amp;amp;应调用构造函数。所以我的问题是:有什么方法可以接受lvalue,&am

c++ - 大多数签名/未签名警告的可接受修复?

我自己确信,在我从事的项目中,有符号整数在大多数情况下是最佳选择,即使其中包含的值永远不会为负数。(更简单的反向循环,更少的错误机会等,特别是对于只能保存0到20之间的值的整数。)大部分出错的地方是std::vector的简单迭代,过去常常是数组,后来改成了std::vector。所以这些循环通常看起来像这样:for(inti=0;i因为这种模式被经常使用,编译器警告垃圾邮件的数量关于这种有符号和无符号类型之间的比较往往会隐藏更多有用的警告。请注意,我们绝对没有包含超过INT_MAX元素的vector,并且请注意,直到现在我们使用了两种方法来修复编译器警告:for(unsignedi=

c++ - 接受所有类型作为函数中的参数

我如何在C++中让一个函数接受每个对象,这样我就可以给它数字、字符串或其他对象。我在C++方面不是很好,我希望这不是一个完全愚蠢的问题......编辑:好的,举个例子:如果你想尝试将std::cout流包装到普通函数中,该函数应该能够接受所有东西——从float上的整数到复杂的对象。我希望现在更清楚了! 最佳答案 您可以为不同的类型重载您的函数,即size_tfunc(int);size_tfunc(std::string);或者和/或另外,您可以提供函数模板,这是一种告诉编译器如何为任何特定类型生成函数的方法,例如template

c++ - 错误消息 : name lookup of ‘jj’ changed for ISO ‘for’ scoping,(如果您使用 ‘-fpermissive’,G++ 将接受您的代码)

错误是:Infunction‘intreturnShortestWeightedBranch(std::vector>*)’:error:namelookupof‘jj’changedforISO‘for’scopingnote:(ifyouuse‘-fpermissive’G++willacceptyourcode)代码是:for(inti=0;i这里可能是什么问题?编辑1:我更改了以下内容:for(intjj=0;jj到:intjj;for(jj=0;jj现在它正在工作!!我不明白原因。 最佳答案 内部for语句的末尾有一个分号

c++ - 如何编写接受回调的 C 函数的 C++ 包装类方法?

给定以下C接口(interface):IoT_Error_taws_iot_mqtt_subscribe(AWS_IoT_Client*pClient,constchar*pTopicName,uint16_ttopicNameLen,QoSqos,pApplicationHandler_tpApplicationHandler,oid*pApplicationHandlerData);“aws_iot_mqtt_subscribe存储其参数供以后引用-调用,以响应稍后某个时间点的某个事件”处理程序:typedefvoid(*pApplicationHandler_t)(AWS_IoT

c++ - 为什么 c++ 编译器接受这个初始化?静态整数 x = x;

我刚知道这个:staticintx=x;为什么C++编译器接受这个初始化?我会称之为编译器异常,但有人可能会对此给出一个很好的解释。因此,对于具有静态存储的数据,可以使用自身初始化变量...我已经使用VS2015和VS2017编译器以及其他一些在线C++编译器进行了尝试。 最佳答案 static和非static变量其实是一样的。名称在其声明符之后和初始化之前(如果有的话)立即变得可见。因此在staticintx=x;名称x在第一次出现后立即可见,并且可以在初始化程序中引用。因为它是静态的,所以它的初始值是明确定义的(它是0)。这也是

Python套接字只接受本地连接

服务器:importsockethost=""port=4242backlog=5size=1024s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((host,port))s.listen(backlog)client,address=s.accept()while1:data=client.recv(size)ifdata:client.send(data)print(data.decode("utf-8"))客户:importsocketimportsyshost=sys.argv[1]port=4242size=1