相关疑难解决方法(0)

元素方式元组添加

我在元组中有一些值,我希望在元素方面添加另一个元组.所以我想要这样的功能:

std::tuple<int,int> a = {1,2};
std::tuple<int,int> b = {2,4};


std::tuple<int,int> c = a + b; // possible syntax 1
a += b; // possible syntax 2
a += {2,4}; // possible syntax 3
Run Code Online (Sandbox Code Playgroud)

输出元组将具有该值的位置 {3,6}

正在看CPP参考,但我找不到这个功能.这个这个问题可能是相关的,但是其他复杂性会使答案变得模糊不清.

c++ tuples

30
推荐指数
3
解决办法
1739
查看次数

如何为C++元组编写折叠/求和函数?

我想编写一个fold函数std::tuple来计算例如给定元组中所有元素的总和(或乘积).例如,给定

std::tuple<int,double> t = std::make_tuple(1,2);
Run Code Online (Sandbox Code Playgroud)

我想算一下

auto s = sumT(t); //giving 3
Run Code Online (Sandbox Code Playgroud)

我试过但是无法在下面编译我的模板编程(c ++ 11/1z)代码.我也试着去适应接受的答案对我的其他问题(如何执行用C元组算术++(C++ 11/C++ 17)? ),但无法弄清楚如何使用std::index_sequence在这种情况下.

我遇到的问题是:

1)我无法弄清楚类型,例如如何使用第一个元素的类型作为返回类型.目前,我_res在模板中使用了一个类型,但我不知道是否会阻止c ++的自动类型推理.

2)我想在不使用显式初始元素的情况下对其进行编程0,以便可以将其用于其他类型的fold操作.

目前,递归在最后一个元素处结束.我想结束递归,_size - 1以便我可以直接对最后一个元素执行操作而不需要求助0.

我下面的代码试图通过递归来做到这一点.但我不熟悉模板编程,以及循环如何为元组工作.

有人可以帮助修复代码或提出更好的解决方案吗?

到目前为止我的代码是:

#include <tuple>
#include <iostream>
#include <functional>

// helper class for fold operations
template<typename Op,typename _res, typename _Tp, size_t _i, size_t _size>
struct _tuple_fold  {
    static constexpr _res _op(Op const & op, const _Tp& _t) { …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 stdtuple c++17

6
推荐指数
2
解决办法
1600
查看次数

使用std :: get,std :: tuple_size,std :: tuple_element对元组的组件求和

我有一个具有类似元组的界面的自定义类.因为我想我的代码尽可能通用的,我认为这将是我的基础上的功能的算法是一个好主意std::get,std::tuple_size,std::tuple_element所以你只需要专注这些功能用我的算法.让我们称之为需要这些功能特化的概念Tuple.

现在我试图总结一个组件Tuple.函数声明应该是这样的:

template <class Tuple>
int sum_components(const Tuple& t);
Run Code Online (Sandbox Code Playgroud)

我想有很多模板编程涉及但我无法弄清楚如何做到这一点.

对于添加,我只会使用全局的重载+ operator.

我正在使用c ++ 1z.

c++ tuples boost-tuples stdtuple c++17

4
推荐指数
2
解决办法
1335
查看次数

标签 统计

c++ ×3

c++17 ×2

stdtuple ×2

tuples ×2

boost-tuples ×1

c++11 ×1