比较向量的向量

3
我有一个存储指针的向量向量。目前,我遍历它们并比较每个指针,如果我发现它们不相等,则向量也不相等。但我想知道这是否是正确的做法。
更新:std::vector<std::vector<Combination*> > combinations;

你是在比较指针本身吗?还是先对它们进行解引用?如果是前者,那么只需在整个向量上使用operator==。否则,你现在的做法就很好。 - Benjamin Lindley
@BenjaminLindley 我在比较指针。那么我应该在向量的向量上使用 == 还是每个向量上使用? - Stals
@Stals,一旦在外部向量上工作,它将比较每个元素,这将比较每个指针。 - chris
如果您将其应用于向量的向量上,它将随后比较每个子向量。通过比较每个指针来比较子向量。第一个失败的指针比较将导致子向量比较失败。第一个失败的子向量比较将导致整个操作失败。在子向量的大小或向量的向量的大小不匹配时,立即失败。如果这就是您想要的,那么是的,只需比较整个向量的向量即可。 - Benjamin Lindley
@Stals:如果您能展示类型声明,那将更容易些。 - Matthieu M.
显示剩余2条评论
1个回答

3
如果你要比较指针本身,那么你可以在整个向量(或向量的向量)上使用 operator==。它首先检查两个向量的大小是否相等。如果它们相等,则随后使用 operator== 来逐个比较每个元素。因此,如果你有一个向量的向量或向量的向量的向量,它会递归地工作。尽管这并不是严格的递归,因为每个 operator== 实际上都是一个不同的函数。
如果您要取消引用指针,则您使用的方式是正确的。但对于这种情况,您可以考虑使用适当的谓词来使用 std::equal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接