因为标题提到,我试图创建一个向量数组,向量不是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向量和与我工作无关的事情会让我更加困惑,因此我发现需要发布这个。我真的希望这不会被标记为重复!
答案 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;
}