我正在编写一个程序,它读取下面表格中的文本文件,将数据导入向量,然后用它进行一些计算。目前,我能够成对导入我的数据,将它们插入到矢量中并对矢量进行排序。但是,当涉及到实际删除重复项时,我的所有努力都失败了,因此我可以将该矢量用于其他目的。 / p>
1 4
5 6
4 5
4 5
5 4
6 7
...
这是目前我的相关代码。如果我在上面的向量上做vec1.size()(只有6行),输出应该是5.但是,我尝试的每个文本文件,我得到1的输出,我不明白为什么..
while( getline( fs1, instrng ) ) {
istringstream s1(instrng);
int a, b;
s1 >> a >> b;
pair<int,int> pair1 = make_pair(a,b);
vec1.push_back( pair1 );
sort( vec1.begin(), myvec1.end() );
auto last = std::unique(vec1.begin(), vec1.end());
vec1.erase(last, vec1.end());
答案 0 :(得分:2)
似乎您想使用set
而不是vector
。
答案 1 :(得分:-1)
std::map<int, pair<int, int>> filter;
while( getline( fs1, instrng ) ) {
istringstream s1(instrng);
int a, b;
s1 >> a >> b;
pair<int,int> pair1 = make_pair(a,b);
int larger = (a>b?a:b);
int smaller = (a>b?b:a);
int key = larger*10000 + b;
filter[key] = pair1;
}
迭代这张地图应该让你解压缩 你想要的矢量。如果设想更多条目,您可能希望将任意分配的10000更改为更大的数字。应该有更强大的方法来做到这一点。