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

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

本文关键字:之间 连接 结构 整数 类型      更新时间:2023-10-16

我从文件中读取点,我使用库 Lemon(因为我想稍后使用图形),因此每个点都由类型表示:dim2 :: 点。所以我使用了柠檬/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//即 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";

重要提示:

    您的示例文件包含 3 个点,但仅包含 2 个帧号,
  1. 在本例中,将仅插入 2 个帧号-点组合
  2. 如果文件中有多个相同的帧号,则只有第一个实例会被frame2PointTable接受
我在这里用

pair<int, int>而不是dim2::Point给你写了一个活生生的例子:http://ideone.com/qtCZ8L