的矢量的文本文件的數據類型作爲結構和存儲數據C++讀我在形式在文本文件中的大型數據:其浮點值從在列表
1 0.933 2 0.865 3 0.919 4 0.726
2 0.854 3 0.906 4 0.726
2 0.882 5 0.853 4 0.897
.
. etc
每整數如下。我想逐行讀取這個文件,並將每行存儲在列表中。我知道如何做到這一點使用鏈表的數組,但是,我無法修復內存泄漏。我讀過,最好使用STL代替。 例:
list 1= 1 0.933 2 0.865 3 0.919 4 0.726
list 2= 2 0.854 3 0.906 4 0.726
list 3= 2 0.882 5 0.853 4 0.897
.
.
我不知道,如果(列表的向量)是類似的(陣列鏈表)。我嘗試過不同的方式,但我所有的嘗試都失敗了。
#include "stdafx.h"
#include <vector>
#include <list>
#include <iostream>
#include <map>
#include <sstream>
#include <iterator>
#include <fstream>
struct MyData{
int Item;
float Prob;
};
std::istream& operator>>(std::istream &is, MyData&d)
{
return is >> d.Item >> d.Prob;
}
int main()
{
std::ifstream in("DataF.txt");
std::string line;
int i = 0;
while (std::getline(in, line)) {
typedef std::istream_iterator<MyData> MyDataIstrIt;
std::stringstream ss(line);
std::vector< std::list< MyData> > data3{ MyDataIstrIt(ss), MyDataIstrIt() }; // here I couldn't fix the extractor definition for the vectors of lists
// another attempt
/*std::vector<MyData> data{ MyDataIstrIt(ss), MyDataIstrIt() };
std::vector< std::list< MyData> > data2;
data2.push_back(std::vector<MyData>()); // I read this is important for memory leak
data2.push_back(data);*/
// data2[i].push_back(data);
// ++i;
}
system("PAUSE");
return 0;
}
我會用'std :: vector>'爲此,如果每行項目的順序不是強制性的。如果需要排序,我會使用'std :: vector >'。如果需要原始*精確*順序,則使用'std :: vector >>'或類似的結構。前兩個維護'int'作爲索引,這有其好處。 –
WhozCraig