0

我需要使用 boolean、std:string 和 int 向量化,我用谷歌搜索并将多维向量定义为:

std::vector< std::vector< std::vector <std::vector<int> > > a;

但这对我来说有问题,它只有一种数据类型,我找到了一对:

std::vector<std::pair<bool,float> >  a;

但是 std::pair 有问题,不能定义更多的二维。

问题:如何定义每个维度都有特定数据类型的多维向量?注意:我需要 3 个维度。

4

5 回答 5

2
template<typename First, typename Second, typename Third>
struct triplet
{
   triplet()
   {
   }
   triplet(const First& f, const Second& s, const Third& t):
      first(f), second(s), third(t)
   {
   }
   First first;
   Second second;
   Third third;
};

template<typename First, typename Second, typename Third>
triplet make_triplet(const First& f, const Second& s, const Third& t)
{
   return triplet(f, s, t);
}

或者当然,如果你有 C++11 支持 - 使用std::tuple<Args...>boost::tuple如果可以使用 boost 并且没有 C++11 支持。

于 2012-08-03T09:41:14.410 回答
1

怎么样:

struct mytype {
    bool a;
    std::string str;
    int num;
};

std::vector<mytype>

?

于 2012-08-03T09:46:59.123 回答
1

astd::pair同时包含一个值和一个向量怎么样?IE

std::vector<std::pair<bool, std::vector<std::pair<std::string, str::vector<int>>>>>
于 2012-08-03T09:42:07.040 回答
1

您可以使用 std::tuple

std::vector<std::tuple<bool, std::string, int>>

但这不是一个多维向量。它是元组的线性向量。

于 2012-08-03T09:38:12.203 回答
1

如果唯一的问题std::pair是缺少超过 2 维,您可以使用std::tuple(c++ 11) 或boost::tuple. 或者只是创建自己的结构

于 2012-08-03T09:39:09.070 回答