草庐IT

四元组

全部标签

c++ - 通过模板成员函数访问私有(private)元组元素

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭6年前。类(class)foo包含一个私有(private)元组成员。我想使用getElement()获取对此元组元素的引用.我找到了这个解决方案,但是当对象被传递给另一个类的构造函数时它不起作用bar:#includetemplateclassfoo{std::tupletup_;public:foo(Args...args):tup_{args...}{};templateconsttypenamestd::tuple_el

c++ - 在 C++11 中替换元组中的类型

我正在尝试使用C++中的模板来执行以下操作:我有这样一个函数:templatevoidf1(conststd::tuple&t1);在此函数内,我想创建另一个元组t2,以便将t1的每个元素都复制到t2的相同位置,A类型的元素除外,t2应为此创建B类型的对象。但是,B的构造函数引用了一个类型为A的对象以及类型为的第二个参数C&。C的实例在转换之前创建,并且在遇到A类型的对象时应作为第二个参数传递给B的构造函数.像这样,只是完全概括:std::tupleConvert(std::tupletpl,C&c){returnstd::tuple(std::get(tpl),B(std::get(

c++ - 元组查找函数参数替换失败

所以,我在休息一段时间后才回到C++,我想也许我应该写些有趣的东西。在这里,我想到了搜索元组容器并在元组的第N个元素满足要求(值或一元函数)时返回迭代器的函数。所以,这是我现在写的:templateclassContainer,templateclassTuple,typename...TupleArgs>autofind(typenameContainer>::iteratorit1,typenameContainer>::iteratorit2,decltype(std::get(std::declval>()))searchedValue){for(;it1!=it2;++it1

C++:将元组转换为类型 T

我正在尝试创建一个名为tuple_cnv的类,它带有一个(隐式)转换运算符以从元组构造任何对象(如C++17std::make_from_tuple函数),但具有递归性质,以这种方式,如果一个元组由其他元组组成,它会将任何“内元组”转换为tuple_cnv以允许递归就地构造目标类型:#include#include#include#includestructA{inti1,i2,i3;};structB{Aa1,a2;};templatestructtuple_cnv;templatestructtuple_cnv>{usingtuple_t=std::tuple;std::refer

c++ - 任意但编译时已知数量的类型的元组

假设我有一个由另一个完整的POD类型参数化的类型:templatestructMyFoo{/*...*/};有了它,就有可能拥有它们的元组:typedefstd::tuple,MyFoo,MyFoo>Foo3;但是现在,我想要一个类型“Foo”,其中N是constexpr.一种实现类似于Foo的方法会是:templatestructFoos;templatestructFoos{typedefstd::tuple>type;};templatestructFoos{typedefstd::tuple,MyFoo>type;};/*continuewiththis....*/即为我想要的

将函子推入元组

我简化了我需要的某些代码的类型签名,看起来大致是这样:Functorf=>f(Maybea,b)->(Maybe(fa),fb)我可以如何实现这样的功能?如果是这样,怎么样?我一半猜想我需要使用Traversable,但是我很难将所有这些放在脑海中。看答案如果它是可穿越的,而不是函子,我们可以做。fn::Traversablet=>t(Maybea,b)->(Maybe(ta),tb)fnv=(sequenceA$fmapfstv,fmapsndv)可以吗?

c++ - 如何构建一个元组 vector 并像对一样对它们进行排序?

假设,我有几个像这样的整数元素:(391),(152),(283),(144),(165),(156)现在我想对元素进行排序,例如对vector进行排序。唯一不同的是,这里我们有3个键,而不是2个键。排序后的元素将如下所示:(144),(152),(156),(165),(283),(391)是否有任何STL或其他技术可以实现此目的?我发现了元组,但在理解它时遇到了一些问题。你们能以任何方式帮助我吗?可能是通过提供有用的链接或解释过程。 最佳答案 Avector的tuple如果需要,可以只使用STL进行排序。#include#inc

c++ - 在 C++17 中定义可变坐标(元组)类型?

我想定义一个可变元组类型来表示坐标。例如,对于某些魔法类型:templatestructCoordT{typedefstd::tuplecoord_type;};我想要CoordT::coord_type成为3维坐标类型:std::tuple.但是我不知道如何使用模板编程来生成N重复double谁能帮忙解释一下怎么写? 最佳答案 使用std::make_integer_sequence生成适当长度的包,然后将元素映射到double值:templatestructTupleOfDoubles{templatestaticautofoo

c++ - c++0x 元组是否使用新的可变参数模板或 Boost 的宏元组实现?

我读到它基于Boost的版本,但我不太确定具体到实现时这意味着什么。我知道Boost有自己的可变参数模板,但我认为c++0x会为新元组使用它自己的可变参数模板。 最佳答案 C++0x标准草案中的tuple使用C++0x可变参数模板。它被声明为(§20.4.1):templateclasstuple;但是请注意,TR1语言扩展还包括tuple,它不使用可变参数模板,因为在编写TR1时没有这样的东西。在TR1中,tuple声明为(§6.1):templateclasstuple;其中M是一些实现定义的值,应该至少为10。TR1并不是C+

c++ - 无法将矩阵转换为四元数并返回

我试图将我的旋转矩阵存储为四元数,然后当我想用它进行转换时,将它转换回来。我正在使用为这些提供mat4_cast和quat_cast的glm库。但是,当我执行以下代码时:glm::mat4origTest=glm::lookAt(position,lookAtPt,up);glm::quatquatTest=glm::quat_cast(origTest);glm::mat4mat4Test=glm::mat4_cast(quatTest);我得到不同的origTest和mat4Test值。我在这里错过了什么吗?位置、lookAtPt及以上是glm::vec3。