草庐IT

transform-only

全部标签

c++ - 为什么我不能在 std::transform 中使用 std::get<0>?

在尝试编译以下将复制map的代码时vector的键:mapmss;vectorvs;transform(mss.begin(),mss.end(),back_inserter(vs),get);VS2013分不清哪个get是有意的,但这种更简单的用法效果很好:vs.push_back(get(*mss.begin()));指定get没有帮助。我错过了什么? 最佳答案 std::get有很多重载,此外,其中每个都是一个函数模板本身,因此编译器无法在您请求其中一个地址的调用站点上分辨出您想要哪个。如果你坚持使用std::get,你需要使

c++ - 元组的 std::transform 等价物

我想要一个行为类似于std::transform的函数对于元组。基本上要实现的功能是templatevoidtuple_transform(Tuple&&source,Tuple&&target,Funcf){//elementsof`target`tibecome`f(si)`,where//siisthecorrespondingelementof`source`};我相信要实现这一点,我需要一个编译时整数范围结构,它是std::index_sequence的概括。我已经实现了它here与cti::range.我也相信this编译时间遍历的类型在这里是理想的:templatevoi

c++ - MSVC 等同于 GCC 的 -fno-finite-math-only?

在GCC上,我们启用-ffast-math来加速浮点计算。但是由于我们依赖于NaN和Inf浮点值的正确行为,我们还打开了-fno-finite-math-only,以便假设值不是NaN/Inf的优化对于MSVC,-ffast-math的“等价物”显然是/fp:fast。但是,与GCC的-ffast-math一样,它alsoincludes假设Nan/Inf不存在的优化。(至关重要的是,不能保证像std::isnan()这样的测试会给出“准确”的结果。)是否有一个MSVCC++编译选项允许您利用大部分/fp:fast优化,但仍“正确”处理NaN和Inf值?(或者至少,保证像std::is

c++ - VC++ 2010 中的 "moveable-only types"问题

我最近安装了VisualStudio2010ProfessionalRC来试用它并测试在VC++2010中实现的几个C++0x功能。我实例化了std::unique_ptr的std::vector,没有任何问题。但是,当我尝试通过将临时对象传递给push_back来填充它时,编译器会提示unique_ptr的复制构造函数是私有(private)的。我尝试通过移动它来插入一个左值,它工作得很好。#include#includeintmain(){typedefstd::unique_ptrint_ptr;int_ptrpi(newint(1));std::vectorvec;vec.pu

c++ - Qt QFileSystemWatcher : signal fileChanged() gets emited only once

我正在尝试使用QFileSystemWatcher,但不知为何它没有按预期工作。还是我做错了什么?我已将QFileSystemWatcher设置为监视单个文件。当我第一次修改文件时,fileChanged()被发出,没关系。但是,当我再次修改文件时,fileChanged()不再发出。这是源代码:main.cpp#include#include"mainwindow.h"intmain(intargc,char**argv){QApplicationapp(argc,argv);MainWindowwindow;window.show();returnapp.exec();}主窗口.h

c++ - 标准库中 boost::make_transform_iterator 的等价物是什么?

处理constvector时,以下内容不起作用:conststd::vectorv;v.push_back("test");//error:vcannotbemodified相反,您必须在构造它的同一行上初始化vector。然而,即使有这个限制,boost::make_transform_iterator使得在将它们插入v之前对另一个vector的元素做一些事情变得容易。在这个例子中,convert是一个一元函数,返回输入元素的转换版本:autobeg=boost::make_transform_iterator(args.begin(),convert);autoend=boost:

c++ - 了解 std::transform 以及如何打败它

我正在尝试理解针对一个简单、具体问题的面向数据的设计。提前向面向数据的设计人员道歉,如果我做了一些非常愚蠢的事情,但我很难理解我的推理失败的原因和位置。假设我有一个简单的操作,即,float_tresult=int_t(lhs)/int_t(rhs).如果我将所有变量保存在它们相应的容器中,例如,std::vector和std::vector,我使用std::transform,我得到了正确的结果。然后,对于usingfloat_t=float的具体例子和usingint_t=int16_t,我假设将这些变量包装在struct中,在64位架构上,将它们收集在一个容器中应该产生更好的性能

c++ - boost::adaptors::transformed 后跟 boost::adaptors::filtered 调用函数两次

我正在尝试链接boost::adaptors::transformed(我们称之为map)到boost::adaptors::filtered(我们称它为filter)-这个想法是映射fun在一个范围内返回一个“可能”(在我的例子中,一个std::pair)并只输出部分结果。我的第一个实现:defineBOOST_RESULT_OF_USE_DECLTYPE//enablelambdaargumentsforBoost.Range#include#includestructOnlyEven{typedefintargument_type;typedefstd::pairresult_t

windows - VBS : Check IP address and open URL (but only once)

我正在尝试创建一个VBScript,它将通过检查其IPv4地址(由DHCP分配)来检测正在运行的计算机是否连接到我们工作的LAN,然后根据它是否打开特定的URL在我们的网络内部或外部。该脚本将主要用于在工作(10.12.90.0/22)和家庭(通常是192.168/23,但这实际上可以是任何东西)之间漫游的笔记本电脑上。在这两种情况下,我只需要打开corectURL一次,因为几乎总是会有多个网络适配器(有线/无线/蓝牙等)。下面的脚本在我测试时似乎可以工作,但我不是程序员,我不确定是否有更好的方法来做到这一点。理想情况下,我希望避免因延迟而对服务器执行ping操作。strCompute

c++ - Media Foundation - 如何在 MFT(Media Foundation Transform)中更改帧大小

我正在尝试实现能够旋转视频的MFT。旋转本身将在转换函数内完成。为此,我需要更改输出帧大小,但我不知道该怎么做。作为起点,我使用了Microsoft提供的MFT_Grayscale示例。我将此MFT作为转换节点包含在部分拓扑中HRESULTPlayer::AddBranchToPartialTopology(IMFTopology*pTopology,IMFPresentationDescriptor*pSourcePD,DWORDiStream){...IMFTopologyNodepTransformNode=NULL;...hr=CreateTransformNode(CLSID