Я читаю точки из файла, я использую библиотеку Lemon (потому что я хочу использовать график позже), поэтому каждая точка представлена типом: dim2 :: Point .
поэтому я использовал библиотеку лимон / dim2.h
Моя проблема в том, что в каждой точке есть номер кадра видео, поэтому я использовал этот код, чтобы поместить переменные из файла в векторы:
std::ifstream file("file1.txt");
std::vector<dim2::Point<int>> pointTable;
std::vector<int> frame;
int temp, temp2,temp3;
while (file >> temp >> temp2 >> temp3)
{
pointTable.push_back(dim2::Point<int>(temp, temp2));
frame.push_back(temp3);
}
//int tailleFmax = frame.max_size;
for (int i = 0; i < (36) ;i++)
//cout << frame[i] <<endl;
// cout << trajectoire[i].x << endl;
cout << trajectoire[i].y << endl;
Мой вопрос: я не знаю, как изобразить в c ++ соединение между каждой точкой и номером его кадра и назвать эту переменную Trajectory.
Пример файла:
155 // это х
168 // это у
0 // это номер кадра
364
245
20
546
156
Я подозреваю, что map<int, dim2::Point<int>>
это то, что вы ищете.
Вы также можете упростить свой код, читая в точке непосредственно с помощью dim2::Point
Оператор по добыче: http://lemon.cs.elte.hu/pub/doc/latest-svn/a00862.html#g2dd3eccf5dece76c03bc6d1c2f348643
Ваш окончательный код должен выглядеть примерно так:
ifstream file("file1.txt");
map<int, dim2::Point<int>> frame2PointTable;
pair<int, dim2::Point<int>> temp;
while(file >> temp.second >> temp.first) frame2PointTable.insert(temp);
Для вывода этого вы можете сделать что-то вроде:
for(const auto& i : frame2PointTable) cout << i.first << ": (" << i.second.x << ", " << i.second.y << ")\n";
Важные заметки:
frame2PointTable
Я написал вам живой пример, используя pair<int, int>
вместо dim2::Point
Вот: http://ideone.com/qtCZ8L
Других решений пока нет …