У меня есть файл в этом формате:make_pair для вектора <вектор <struct>>
id1 its_vlaue1 id2 its_vlaue2 id3 its_vlaue3
id4 its_vlaue4 id5 its_vlaue5
id6 its_vlaue6 id7 its_vlaue7 id8 its_vlaue8
где идентификатор целое число, и its_vlaue является поплавок, например:
100 0.1 2 0.6 9 0.03
4 0.6 3 0.1
.
.
until 300k line
Я прочитал этот файл как:
struct dataf
{
int id;
float value;
};
vector<vector<dataf>> mydata;
dataf DF;
void main()
{
ifstream inFile;
inFile.open("MyData.txt");
if (inFile.fail())
cout << "\n The file has been not found, please try again \n ";
else
{
string line;
cout << "\n File found!\n Reading the file data! \n\n";
// Read the file until EOF
while (!inFile.eof())
{
getline(inFile, line);
std::stringstream Sline(line);
while (Sline >> DF.id>> DF.value)
{
vector<dataf> temp;
temp.push_back(DF);
mydata.push_back(temp);
}
}
}
inFile.close();
PairS();
cout << " \nPress any key to continue\n";
cin.ignore();
cin.get();
return;
}
Pairs() функция make_pair таким образом, что:
(id1,id2), (id1,id3), (id2,id3)
(id4,id5)
(id6,id7), (id6,id8), (id7,id8)
, но я не мог понять
void PairS()
{
vector<dataf>::iterator i;
vector<dataf>::iterator j;
std::map<std::pair< int, int>, float> Pairf;
for (int k = 0; k != ((mydata.size()) - 1); ++k)
{
for (i = mydata[k].begin(); i != mydata[k].end(); ++i)
{
int a = (*i).Item;
for (j = mydata[k + 1].begin(); j != mydata[k+1].end(); ++j)
{
int b =(*j).Item;
auto itt = Pairf.find(std::make_pair(b, a));
++Pairf[(itt != Pairf.end()) ? std::make_pair(b, a) : std::make_pair(a, b)];
}
}
}
cout << "\n\n The TotalSupp's Count for every Pair of Items :\n\n";
for (const auto& p : Pairf)
{
std::cout << "(" << p.first.first << " " << p.first.second << ") = "
<< p.second << '\n';
}
cout << "\n";
}
также, я не уверен, если я выбрать подходящий способ для хранения своих данных в векторе.
Большое спасибо. первая часть работает, но у меня есть вопрос: код, который, когда вы читаете данные из файла, означает все данные? и() означает до конца файла? – NHA
вторая часть, дал мне ошибки, поэтому я не испытывал, даже после того, как я ввожу (#include #include #include #include ) –
NHA
для второй части, я хочу make_pair с элементов в векторе, так что все элементы в первой строке будут: (id1, id2), (id1, id3), (id2, id3) и подсчитывать их частоты, и делают то же самое для второй строки: (id4 , id5), если пара существует в строке, я не буду создавать пару вместо этого, я буду обновлять ее частоту. Я думаю, я попытаюсь сделать это из файла сразу, вместо того, чтобы сначала поместить мои данные в вектор – NHA