问题标签 [boost-tuples]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
510 浏览

c++ - 如何将 boost::tuple 分配给 boost::shared_ptr

在我的代码中,我有这样的东西

如何使 st 指向 tp ?

0 投票
0 回答
183 浏览

c++ - 将字符串流式传输到 boost::fusion::vector 不起作用?

我想通过从 std::cin 流式传输来初始化 fusion::vector。正如文档所说,这似乎是不可能的:

...使用 std::string 或 C 风格的字符串元素提取序列通常不起作用,因为流式序列表示可能无法明确解析

之前可能已经问过这个问题,但我想深入了解“可解析字符串”的外观。

她就是一个例子:

输出:

如何让 fusion io 运算符“>>”与 std::string 很好地配合使用?

0 投票
0 回答
110 浏览

c++ - 将 Boost:Tuple 解析为 char*(带字节序)

我有许多类具有不同的私有成员实现,boost::tuple<> structures即。<std::string, int><short, short, float>。我现在需要将该元组解析为私有元组const char* message(因为我想通过 tcp 发送它),但不能不改变那些需要改变字节序的数据类型的字节序。

这是我到目前为止所拥有的:

在继续之前,我认为我需要知道一些事情:

  1. 如何跟踪元组成员,以便我可以message根据他们的数据类型(静态成员,也许?)分配空间

  2. 如何在模板中区分符合ntohl要求的数据类型和需要不同处理的数据类型,即std::string

  3. 这甚至是正确的方法吗?
0 投票
2 回答
371 浏览

c++ - Boost::tuple - 分配给 get<>()

以下无法编译对 t.get<1>() 的赋值。

错误消息 FWIW 是:

更新 1:在纠正了 map.find 返回一对的事实之后,我现在得到一个链接错误,显然与实例化模板有关

0 投票
1 回答
446 浏览

c++ - 融合矢量投影

我有一个融合向量,其中包含多个不同类型的成员数据的元素,我想创建一个新的融合向量,它将仅投影特定的数据成员。我已经研究了一段时间,但没有进展。

0 投票
1 回答
855 浏览

c++ - 按类型获取元组元素(C++ 0x 之前)

我有一个包含元组的模板类,并且希望能够在编译时按类型检索元素。为了简化事情,容器类被限制为最多三个条目:

阅读Get index of a tuple element's typeFor std::tuple, how to get data by type, and how to get type by index的答案?我通过递归访问者方法实现了这一点,并且使用具有 c++11 功能的 GNU C++ 编译器可以正常工作。

我现在必须将我的代码移植到 Windows。由于某些外部库的限制,我必须使用似乎不支持可变参数模板的 Visual Studio 2010。

我确信有一种解决方法(因为 boost::tuple 也可以在不支持可变参数模板的情况下使用),但我对整个模板元编程主题仍然很陌生,还没有找到解决方案。

那么有没有人知道在 Visual Studio 2010 中没有可变参数模板的情况下解决这个问题的方法?

顺便说一句:即使元组的元素远远超过三个,访问者方法也能很好地工作。容器将被限制为 3 或 4 个元组元素,所以我什至不介意将索引硬编码到我的实现中。

0 投票
1 回答
1246 浏览

c++ - c++11 tie name 与 boost 冲突

我正在尝试将一些代码从 to 迁移boost::tuplestd::tuple但我遇到了一些奇怪的错误:在我调用using namespace std(并且从不boost)之后,我希望一个不合格tie的解析为std::tie. 但是,例如,当元组包含 boost 容器指针时,这似乎会失败。

如果我用 编译g++ -std=c++0x -c test.cpp -DUSE_STD,一切都很好。但是,如果没有-D USE_STD,我会收到编译错误,建议g++尝试使用boost::tuples::tie. 我正在使用 g++ 4.8.1 和 boost 1.55.0。你认为这是boost的错误吗?还是我缺少一些规范?

0 投票
1 回答
808 浏览

c++ - C ++无法从派生类中调用基类方法

这是我的第一个问题,我希望我做的一切都是正确的。

我尝试从 boost 元组派生一个类。Boost 的元组提供了一个 get() 模板方法来访问各个字段。有趣的是,我不能在派生类中使用该方法。

以下代码显示了问题:

我想知道为什么我可以get<0>()从主函数访问该方法

但不是来自A& getVal0()方法内部:

第二个返回行是我尝试将方法调用范围限定为基类:

这会产生不同的错误

调用外部函数 `boost::tuples::get<0>(*this) 有效。这种解决方法对我来说没问题。但是我仍然想知道为什么我现在不能使用 tuple 方法。

在 boost 文档中是 Visual C++ 的通知

笔记!MS Visual C++ 编译器不支持成员 get 函数。此外,编译器很难找到没有显式命名空间限定符的非成员 get 函数。因此,在编写应使用 MSVC++ 6.0 编译的代码时,所有 get 调用都应限定为:tuples::get(a_tuple)。

但我使用的是 GCC 4.5.2 和 4.8.1

提前致谢

0 投票
2 回答
138 浏览

c++ - 检测元组中的引用类型

我了解了std::forward_as_tuple. 我在我的项目中使用了这项技术:

然后,我可以得到一个 MySQL C API Prepared Statement 字符串,如下所示:

“pszname”和“iage”是左值,所以它们是绑定变量。2是一个右值,所以我可以说它是 SQL 语句中的文字。

我的问题是:

如何判断元组中的元素是右值还是左值?

例如:

第一个元素是左值引用,第二个元素是右值引用。

请使用 C++ 代码来说明这一点。该代码可以处理可变模板元组。

0 投票
2 回答
2355 浏览

c++ - c++11结合std::tuple和std::tie实现高效排序

我对 std::tuple 和 std::tie 相当陌生。我需要一种根据从左到右的比较顺序有效地对结构进行排序的方法。出于这个原因,我选择使用std::make_tuplestd::tie类型在提供的实时示例中自定义订购 StructA 。元组方法提供了从左到右的内置等价比较,这对于带有 lambda 比较器的 std::sort 的 LessThanComparable元素排序是理想的(为此我展示了 3 个示例)。

问题是,据我所知,std::make_tuple对元组元素进行低效复制,我想知道是否有某种方法可以将 std::make_tuple 与 std::tie 结合起来,就像我尝试做的那样第三个比较器 - 失败(否则它的输出看起来像第一个输出排序)。

在我的具体示例中,我不能直接使用std::tie,因为我需要使用临时作为元组中的第一个元素。

输出如下

我期待第三组输出与第一组相同,或者如果有人能告诉我如何正确混合低效的 std::tuples 和高效的 std::ties