在编译时定义了不同类型的向量

di

我的问题很简短:

我需要一个包含不同类型的向量,例如:

std::vector<int,double> vec;
vec.emplace_back((int) 1);
vec.emplace_back((double) 2.0);

我尝试使用boost:variant,但是问题是,每次有人要使用值时,都必须从向量中访问/获取数字。

我为向量定义了初始值,因此类型是静态的,并且是在编译时定义的。而且,我希望能够遍历它们(这就是为什么我使用向量的原因-它也可以是地图或任何其他容器)。

我想要的是在程序中使用像int或double这样的向量项,而不使用boost :: get或类似的东西。我认为这应该可行,因为每个条目的类型都是在编译时定义的,但是我不知道如何使它起作用。

double d=vec[1]*3.0; //this should somehow work
int i=vec[0]*8;      //this also without any get or anything

我尝试使用元组,但是我对它们没有太多的经验,并且遍历它们似乎很困难。

for(auto &elem : vec) std::cout << elem << std:endl; //this or sth. similar should also work

任何帮助深表感谢。

您确实应该使用元组。CPP是一种强类型语言。处理它。

现在,如果要迭代,请考虑使用Boost Fusion:

Live On Coliru

#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include <boost/fusion/algorithm.hpp>
#include <boost/fusion/adapted/boost_tuple.hpp>

#include <boost/phoenix.hpp>

using namespace boost;
using namespace boost::phoenix::arg_names;

#include <iostream>

int main() {
    tuple<int, double, std::string> demo(42, 3.1415, "hello pie universe");

    fusion::for_each(demo, std::cout << arg1 << "\n");

    auto& v2 = get<1>(demo);
    v2 *= 10;
    std::cout << "\nNew v2: "         << v2   << "\n";
    std::cout << "Tuple after edit: " << demo << "\n";
}

哪些印刷品

42
3.1415
hello pie universe

New v2: 31.415
Tuple after edit: (42 31.415 hello pie universe)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在编译时检查是模板类型还是向量

来自分类Dev

不同类型向量的c ++向量

来自分类Dev

通过模板参数给定其长度,在编译时生成相同类型的std :: tuple

来自分类Dev

如何使用可变参数模板定义不同类型向量的向量?

来自分类Dev

在编译时推导整个向量空间

来自分类Dev

映射不同类型的向量指针

来自分类Dev

如何在编译时从一些不同的类型中选择类型?

来自分类Dev

在编译时使用类型时从自定义位置加载程序集

来自分类Dev

在编排中接收不同类型的 XML 请求

来自分类Dev

在编译时遍历函数参数类型

来自分类Dev

Haskell:在编译时引用值的类型

来自分类Dev

异构映射,在编译时依赖类型

来自分类Dev

C ++在编译时比较模板类型

来自分类Dev

在编译时强制HList类型的上限

来自分类Dev

在编译时获取std :: variant类型

来自分类Dev

在编译时如何未知对象类型?

来自分类Dev

为什么在编译和导入bits.idl时得到额外的GUID类型定义?

来自分类Dev

打字稿编译时同类型约束

来自分类Dev

Haskell包向量空间在编译时失败

来自分类Dev

Haskell包向量空间在编译时失败

来自分类Dev

在编译时打印类型名称而不中断编译?

来自分类Dev

连接两种不同类型的表时在Tableau中进行自定义聚合

来自分类Dev

C ++在不同类型的向量上具有相同的功能

来自分类Dev

将不同类型的数据附加到字节向量

来自分类Dev

相同类型的压缩向量在地图闭合内导致不同类型

来自分类Dev

泛型混淆:在编译时未定义泛型超类中的此类类型吗?

来自分类Dev

我可以定义不同类型的数组类型吗?

来自分类Dev

在编译时为类型生成唯一的ID

来自分类Dev

在编译时生成类型列表-没有C ++ 11

Related 相关文章

热门标签

归档