我有一个向量的向量:
vector< vector<int> > BigVec;
这个问题涉及到任意数量的向量,每个向量的大小也是任意的。我想要删除每个向量中不重复的元素,但是要删除与其他向量完全相同的向量。我不需要保留向量的顺序,因此可以进行排序等操作。
这应该是一个非常简单的问题,但我还是新手,下面是我(不起作用的)最好的尝试:
for (int i = 0; i < BigVec.size(); i++)
{
for (int j = 1; j < BigVec.size() ; j++ )
{
if (BigVec[i][0] == BigVec [j][i]);
{
BigVec.erase(BigVec.begin() + j);
i = 0; // because i get the impression deleting a
j = 1; // vector messes up a simple iteration through
}
}
}
我认为可以使用Unique()函数来解决问题,但我也无法让它正常工作。
std::vector
有一个operator<
。不过你需要使用带有两个参数的vector::erase
函数;你正在使用的只删除一个元素;你需要删除std::unique
返回的迭代器之后的所有元素。 - James McNellis