点(类型)和整数(无结构)之间的连接

Connexion between points (type) and an integer (without struct )

我从一个文件中读取了点,我使用了 Lemon 库(因为我想稍后使用图形)因此每个点都由以下类型表示:dim2 :: Point 。 所以我使用了库 lemon/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++ 中表示每个点和他的帧号之间的连接并将此变量命名为轨迹。

文件示例:
155 // 那是 x
168 // 那是 y
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";

重要提示:

  1. 您的示例文件包含 3 个点,但只有 2 个帧编号,在这种情况下,只会插入 2 个帧编号-点组合
  2. 如果文件中有多个相同的帧编号,frame2PointTable
  3. 只会接受第一个实例

我在这里用 pair<int, int> 代替 dim2::Point 给你写了一个实例:http://ideone.com/qtCZ8L