2012-10-13 102 views
1

我有一個向量存儲指針向量。目前我遍歷它們並比較每個指針,如果我找到不相等的指針,那麼矢量也不相等,但我不知道這是否是正確的方法來做這樣的事情。比較載體向量

UPD:std::vector<std::vector<Combination*> > combinations;

+0

你在比較指針本身嗎?還是你先解除引用他們?如果前者,那麼只需在整個矢量上使用['operator =='](http://en.cppreference.com/w/cpp/container/vector/operator_cmp)。否則,你這樣做的方式很好。 –

+0

@BenjaminLindley我比較指針。所以,我應該使用向量的矢量或每個矢量==? – Stals

+0

@Stals,一旦在外部矢量將工作。它會比較每個元素,它會比較每個指針。 – chris

回答

2

如果你比較指針本身,那麼你可以只使用operator==對整個向量(矢量)。它首先檢查兩個向量的大小是否相等。如果是,則隨後使用operator==比較每個元素。所以如果你有一個矢量矢量,或者一個矢量矢量矢量,這個遞歸地工作。雖然這不是技術上的遞歸,但每個operator==實際上是一個不同的功能。

如果您正在取消引用指針,那麼您所做的方式就沒有問題。但是對於這種情況,你可以考慮使用std::equal和一個適當的謂詞。