草庐IT

通用化

全部标签

玩转围棋、国际象棋、扑克,DeepMind推出通用学习算法SoG

2016年3月,一场机器人与围棋世界冠军、职业九段棋手李世石展开的围棋人机大战受到全球的高度关注。我们知道,最后的结果是DeepMind的机器人AlphaGo以4比1的总比分获胜。这是人工智能领域一个里程碑性的事件,也让「博弈」成为一个热门的AI研究方向。AlphaGo之后,DeepMind又推出了赢得国际象棋的AlphaZero、击败《星际争霸II》的AlphaStar等等。使用搜索和学习的方法,AI在许多完美信息博弈中表现出强大的性能,而使用博弈论推理和学习的方法在特定的不完美信息博弈中表现出强大的性能。然而,大多数成功案例有一个重要的共同点:专注于单一博弈项目。例如,AlphaGo不会下

STM32学习----通用定时器的应用(PWM)

STM32的通用定时器STM32单片机的通用定时器,有TIM2、TIM3、TIM4、TIM5这4个。通用定时器的功能,用的比较多的有下面几种:计数功能:向上计数,向下计数,向上/向下计数;输入捕获:测量信号的周期和占空比;输出比较:PWM生成:通用定时器框图通用定时器功能多了,框图也就复杂起来了通用定时器框图分解第一部分:时钟来源时钟来源有很多:CK_INT、TIMx_ETR、ITR0、ITR1、ITR2、ITR3、TI1F_ED、TI1FP1、TI2FP2这9个,可以分下类;CK_INT,就是定时器外设的时钟,比如72MHz,属于内部时钟TIMx_ETR,就是定时器所对应的外部输入,这个外部

c++ - 命名(通用)线程安全数据结构?

我正在为线程安全/内部同步的数据结构寻找一个好名字。C++标准使用术语atomic,但是atomichassomeratherspecialmeaning.Microsoft在其Thread-SafeCollections中使用术语Concurrent(或在ParallelContainers中的C++_concurrent)。我真正想要的是(值)类型的通用包装器,它提供一组类似于std::atomics所做的操作,但具有不同的名称和一些从中派生的typedef。(用例:类似于std::atomicforstd::string)您认为以下哪些内容有用/没用,为什么?Synchroniz

c++ - 通用 lambda 及其作为常量表达式的参数

以下代码被GCC7.2和clang5.0.0接受,但被MicrosoftVS201715.5.0Preview5和IntelC++compiler19拒绝:structS{};constexprintf(S){return0;}intmain(){autolambda=[](autox){constexprinte=f(x);};lambda(S{});}微软:(12):errorC2131:expressiondidnotevaluatetoaconstant英特尔:(12):error:expressionmusthaveaconstantvalueconstexprinte=f(

c++ - 非捕获通用 lambda 应该衰减为函数指针吗?

考虑以下代码:intmain(){autol=[](auto){};void(*p)(int)=l;}它与GCC一起工作得很好和clang.让我们考虑以下稍作修改的版本:intmain(){autol=[](auto...){};void(*p)(int)=l;}在这种情况下,clang仍然是acceptsit而GCCrejectsit.是否有任何理由拒绝此代码,或者它是编译器的错误?我要打开一个问题,但我想知道是否存在任何可以由其中一个而不是另一个实现的提案。 最佳答案 这是一个已知的GCC解析错误(64095,68071):[]

c++ - 正确使用通用引用

在c++11之前,我曾经这样写代码://SmallfunctionsvoiddoThingsWithA(constA&a){//dostuff}voiddoThingsWithB(constB&b){//dostuff}voiddoThingsWithC(constC&c){//dostuff}//BigfunctionvoiddoThingsWithABC(constA&a,constB&b,constC&c){//dostuffdoThingsWithA(a);doThingsWithB(b);doThingsWithC(c);//dostuff}但是现在,有了移动语义,允许我的函

c++ - 通用的可插入缓存模式?

鉴于它是thehardthingsincomputerscience之一,有谁知道设置可插入缓存策略的方法吗?我的想法是让我编写一个程序时对需要缓存的内容有最少的思考(例如,使用某种样板、低成本/无成本模式,可以在我可能想要的任何地方编译成任何东西缓存),然后当事情进一步发展并且我知道我需要缓存的地方时,我可以添加它而无需进行侵入性代码更改。作为我正在寻找的解决方案的想法;我正在使用Dprograminglanguage(但中途理智的C++会很好)而且我喜欢模板。 最佳答案 我想到的最接近的事情是纯函数的内存。也许您也对这本书感兴趣

c++ - 用于创建 integral_constants 的任意元组的通用实用程序

利用ScottSchurr'sstr_const我有一个constexpr字符串。classStrConst{public:templateconstexprStrConst(constchar(&str)[N]):str_(str),len_(N-1){static_assert(N>1,"notastring");}constexproperatorconstchar*()const{returnstr_;}constexprsize_tsize()const{returnlen_;}constexprcharoperator[](size_ti)const{returni我有另一

c++ - 何时使用函数模板而不是通用 lambda?

我可以写一个函数模板:templatevoidf1(Tparameter){...}但在C++14中,我还可以创建一个通用的lambda:autof2=[](autoparameter){...};在f1中,我可以直接引用T。在f2中,没有要引用的T,但我可以使用decltype获得相同的效果:autof2=[](autoparameter){usingT=decltype(param);...};通用lambda的一个优点是我可以完美转发它。我不能用函数模板来做到这一点:templatevoidfwdToG(T&¶m){g(std::forward(param));}fwdT

C++可变参数模板构造函数和通用构造函数

代码如(c++14):structS{inta;intb;};classC{public:C(charconst*,size_t){}//1C(Sconst&){}//2C(Sconst*){}//3templateC(T&&...){}//4//C(S){}//5//C(S*){}//6};Ss{1,2};Cc1{s};//calls4andnot2Cc2{"abc",3};//calls4andnot1Cc3{(charconst*)"abc",(size_t)3};//calls1-okCc4{s};//calls5ifuncommentedCc5{&s};//calls6ifu