点(类型)和整数(无结构)之间的连接
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";
重要提示:
- 您的示例文件包含 3 个点,但只有 2 个帧编号,在这种情况下,只会插入 2 个帧编号-点组合
- 如果文件中有多个相同的帧编号,
frame2PointTable
只会接受第一个实例
我在这里用 pair<int, int>
代替 dim2::Point
给你写了一个实例:http://ideone.com/qtCZ8L
我从一个文件中读取了点,我使用了 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";
重要提示:
- 您的示例文件包含 3 个点,但只有 2 个帧编号,在这种情况下,只会插入 2 个帧编号-点组合
- 如果文件中有多个相同的帧编号,
frame2PointTable
只会接受第一个实例
我在这里用 pair<int, int>
代替 dim2::Point
给你写了一个实例:http://ideone.com/qtCZ8L