C++ 从boost::fusion::tuple访问第0个元素
通常,我会通过以下方式访问常规元组元素,比如0C++ 从boost::fusion::tuple访问第0个元素,c++,boost,tuples,boost-fusion,C++,Boost,Tuples,Boost Fusion,通常,我会通过以下方式访问常规元组元素,比如0 mytuple->get<0>(); 但是,如果元组的类型为boost::fusion::tuple,那么如何访问第0个元素 更多细节 我有类似的东西 typedef boost::fusion::tuple<double,double,double,std::string,double,double,int, double,double,double,double
mytuple->get<0>();
但是,如果元组的类型为boost::fusion::tuple,那么如何访问第0个元素
更多细节
我有类似的东西
typedef boost::fusion::tuple<double,double,double,std::string,double,double,int,
double,double,double,double,int,
double,double,double,double,double,
double,double,double,double,double,
double,double,double,double> tuple_def;
typedef boost::shared_ptr<tuple_def> my_tuple_def;
现在我使用它如下
shared_tuple_def btuple = boost::make_shared<tuple_def>(boost::fusion::make_tuple(323,0,0,"A",0,0,0,
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0));
如何访问第0个元素323?您可以使用
你可以用
您可以使用或:
您可以使用或:
我敢问tuple_def到底是什么意思吗?它就像一大堆双元组和其他一些随机片段,似乎是使用结构而不是元组的好选择。最初它只有5个元素,直到它增加到这么多。我最终会将其转换为结构。tuple_def是First类型的def。第一个typedef在下一个语句中使用。我想这就是我几乎完全避免使用元组的原因。它从5个元素开始,接下来是25个元素,很难修复我敢问tuple_def到底是什么意思吗?它就像一大堆双元组和其他一些随机片段,似乎是使用结构而不是元组的好选择。最初它只有5个元素,直到它增加到这么多。我最终会将其转换为结构。tuple_def是First类型的def。第一个typedef在下一个语句中使用。我想这就是我几乎完全避免使用元组的原因。它从5个元素开始,接下来是25个元素,很难修复
int main()
{
shared_tuple_def btuple = boost::make_shared<tuple_def>
(
boost::fusion::make_tuple
(
323, 0, 0, "A", 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0
)
);
std::cout << boost::fusion::get<0>(*btuple) << std::endl;
}
#define FUSION_MAX_VECTOR_SIZE 26
#include <string>
#include <iostream>
#include <boost/fusion/tuple.hpp>
#include <boost/smart_ptr.hpp>
#include <boost/fusion/include/at.hpp>
#include <boost/mpl/int.hpp>
typedef boost::fusion::tuple<double,double,double,std::string,double,double,int,
double,double,double,double,int,
double,double,double,double,double,
double,double,double,double,double,
double,double,double,double> tuple_def;
typedef boost::shared_ptr<tuple_def> shared_tuple_def;
int main() {
shared_tuple_def btuple =
boost::make_shared<tuple_def>(
boost::fusion::make_tuple(
323,0,0,"A",0,0,0,
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0));
std::cout << boost::fusion::get<0>(*btuple) << "\n";
std::cout << boost::fusion::at<boost::mpl::int_<0> >(*btuple) << "\n";
}