试图创建一个向量数组(由我创建的Templatized Vector类)

时间:2018-02-23 09:57:21

标签: c++ arrays class vector dynamic

因为标题提到,我试图创建一个向量数组,向量不是STL,我已经创建了我自己的名为Vector.h的最小类,它基本上是一个可以容纳的动态数组任何类型(模板化)

我从文件中读取大量数据并将每一行分成有意义的属性,我将其存储到我制作的向量中。

Vector<string> myDateVector;
Vector<string> myTimeVector;
Vector<float> mySolarRadiationVector;
Vector<float> myWindSpeedVector;
Vector<float> myAirTempVector;

现在我想创建一个这些向量的数组,其中数组的每个索引都包含一个指向所有这些向量中数据的指针,就像在array [1]中有myDateVector.get(1);时间(1)太阳辐射(1)windspeed(1)airtemp(1)。

现在该做什么很丢失,对C ++很新,研究STL向量和与我工作无关的事情会让我更加困惑,因此我发现需要发布这个。我真的希望这不会被标记为重复!

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你想要将所有这些矢量存储在一个数组中。

由于一些原因,这是不可能的。数组的所有元素必须具有相同的类型,而向量具有不同的类型。

如果你真的想做这件事,你有两个(或更多,取决于你的幻想)方式。

  • 创建向量元组。最简单的变体,但如果您选择它,您必须阅读有关元组的一两篇文章。

  • Vector<float>移至Vector<std::string>。使用std::to_string,卢克!然后,只需使用Vector<std::string> arr[5] = { /* here's your vectors of strings*/} ;

我必须为我的标记道歉,因为移动应用程序使用起来非常不舒服。所以我这样做。

答案 1 :(得分:0)

自己写一个容器

struct MyData
{
  std::tuple<string &, string &, float &, float &, float &> operator[](size_t row)
  {
    return std::tie(myDateVector[row], 
                    myTimeVector[row],
                    mySolarRadiationVector[row],
                    myWindSpeedVector[row],
                    myAirTempVector[row]);
  }

  string & operator()(size_t row, size_t col) 
  { 
    switch (col) 
    {
      case 0: return myDateVector[row];
      case 1: return myTimeVector[row];
    }
  }

  float & operator()(size_t row, size_t col)
  { 
    switch (col) 
    {
      case 2: return mySolarRadiationVector[row];
      case 3: return myWindSpeedVector[row];
      case 4: return myAirTempVector[row];
    }
  }

// and other useful members

private:
  Vector<string> myDateVector;
  Vector<string> myTimeVector;
  Vector<float> mySolarRadiationVector;
  Vector<float> myWindSpeedVector;
  Vector<float> myAirTempVector;
}