Связь между точками (тип) и целым числом (без структуры)

Я читаю точки из файла, я использую библиотеку 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

0

Решение

Я подозреваю, что 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";

Важные заметки:

  1. Ваш пример файла содержит 3 точки, но только 2 номера кадра, в этом случае будут вставлены только 2 комбинации номеров и точек кадра.
  2. Если в файле несколько идентичных номеров кадров, только первый экземпляр будет принят frame2PointTable

Я написал вам живой пример, используя pair<int, int> вместо dim2::Point Вот: http://ideone.com/qtCZ8L

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]