jjzjj

Transform

全部标签

c++ - 回复:使用 boost::make_transform_iterator 进行引用访问

我正在尝试使用boost::make_transform_iterator为自定义类创建迭代器,该自定义类的数据保存在映射中,迭代器使用键vector来访问值。在我的问题中,map的值是容纳大量数据的容器。由于我无力复制数据,因此我想通过迭代器通过引用访问数据。但是,这样做时,数据已损坏,如我所附的简单示例的输出所示。据我所知,问题在于使用from_key仿函数(使用映射引用初始化)和boost::make_transform_iterator的语义。关于如何使用boost正确执行此操作的任何想法?谢谢,帕特里克#include#include#include#include#incl

c++ - 将函数指针传递给算法时选择正确的重载

问题请耐心等待,这真的只是一个例子:#include#includestructfoo{staticintmy_transform(intx){returnx;}staticstd::vectormy_transform(std::vectorx){std::vectorresult;std::transform(x.begin(),x.end(),std::back_inserter(result),my_transform);returnresult;}};我期望发生什么my_transform有两种可能的重载,但只有一种会导致格式良好的模板实例化,而另一种会导致模板实例化格式错误

C++/STL:std::transform 给定步幅?

我有一个包含Nd数据的一维数组,我想用std::transform或std::for_each有效地遍历它。unignedintnelems;unsignedintstride=3;//wearegoingtohave3Dpointsfloat*pP;//thiswillkeepxyzxyzxyz...Load(pP);std::transform(pP,pP+nelems,strMover(pP,stride));//HowtodefinethestrMover?? 最佳答案 答案不是改变strMover,而是改变你的迭代器。定义

c++ - OSG : Get transform matrix from a node

首先,我必须为我的英语道歉。我正在开发一个应用程序,我们必须在每个时刻知道每个节点的属性(位置、旋转...),所以我考虑从场景图中获取每个节点的变换矩阵。我遇到的问题是我不知道该怎么做。例如,如果我有这样的东西:osg::ref_ptrroot=osgDB::readNodeFile("cessna.osg.15,20,25.trans.180,90,360.rot.2,3,4.scale");我想从名为root的Node对象中获取变换矩阵。我发现了类似的东西:osg::Matrixmat=osg::computeWorldToLocal(this->getNodePath());st

c++ - shared_ptr 的容器,但使用原始指针进行迭代

我有一个类包含一个列表,其中包含指向另一个类对象的boost::shared_ptrs。允许访问列表中的元素的类成员函数返回原始指针。为了保持一致性,我还希望能够使用原始指针而不是shared_ptrs进行迭代。因此,当我取消引用列表迭代器时,我想获得原始指针,而不是shared_ptr。我假设我需要为此编写一个自定义迭代器。这个对吗?如果可以,有人可以指出我正确的方向——我以前从未这样做过。 最佳答案 这是一个使用Boosttransform_iterator的选项:#include#include#include#include

c++ - 为什么我不能直接将 to_lower_copy 传递给 transform 而不是将其包装在 lambda 中?

我正在尝试使用boost::to_lower_copy和std::transform来小写一堆字符串。如下,变体1,使用lamdba工作;变体2还可以证明这是编译器选择的正确模板重载。但是lambda很傻——它所做的只是将单个参数转发给boost::to_lower_copy。但是变体3,直接使用函数模板不会编译,即使我实例化它。我错过了什么?我有clang版本3.3(tags/RELEASE_33/rc3),使用libstdc++-4.8.1-1.fc19.i686和boost-1.53​​.0-14.fc19.i686。vectorstrings={"Foo","Bar"};vec

c++ - 如果我们不想将每个元素转换为一个转换元素,而是两个,我们如何使用 std::transform?

如果我们不想将每个元素转换为一个转换元素,而是两个,我们如何使用std::transform?下面的伪代码说明了我想要实现的目标std::transform(a.cbegin(),a.cend(),std::back_inserter(b),[](Tconst&x){returnf(x)andg(x);});当然,我可以调用std::transform两次,但这会很烦人。也许我们需要提供一个自定义的插入器。还有其他选择吗? 最佳答案 transform仅用于进行一对一的转换。自定义插入器无论如何也帮不了你,因为transform是这

c++ - STL推力多 vector 变换?

我想知道是否有更有效的写法a=a+b+c?thrust::transform(b.begin(),b.end(),c.begin(),b.begin(),thrust::plus());thrust::transform(a.begin(),a.end(),b.begin(),a.begin(),thrust::plus());这行得通,但是有没有一种方法可以只使用一行代码来获得相同的效果?我查看了示例中的saxpy实现,但是它使用了2个vector和一个常量值;这样效率更高吗?structarbitrary_functor{template__host____device__void

c++ - 使用 std::transform 制作一对 vector

我想从一对vector开始创建一个vector对。例如,如果A是std::vectorA=[101]并且B是std::vectorB=[010],我想要一个结构std::vectorC=[10,01,10]其中C_i=std::pair(A_i,B_i).我会避免for循环遍历两个vector,所以我正在寻找像std::transform()这样的几行代码。我尝试了以下代码:std::vectorboolPredLabel(tsLabels.size());std::vectorboolRealLabel(tsLabels.size());std::vector>TrPrPair(ts

12.旋转、缩放、倾斜、平移Transform

RotateTransform旋转RotateTransform表示旋转一个对象的角度。首先我们来看一下它的定义publicsealedclassRotateTransform:Transform{publicstaticreadonlyDependencyPropertyAngleProperty;publicstaticreadonlyDependencyPropertyCenterXProperty;publicstaticreadonlyDependencyPropertyCenterYProperty;publicRotateTransform();publicRotateTrans