我有一個類,產生任意數量的工人對象,計算他們的結果到std::vector
。我將在某些點刪除一些工作對象,但我想保留他們的結果,只按照spawned
他們知道的那個類別。因此,我爲類A中的輸出提供了向量。我有(IMO)三個選項:我可以指向矢量,引用或迭代器作爲成員。雖然迭代器選項有一定的退步(迭代器可以遞增)。我不確定指針或引用是否更清晰。 我覺得引用更好,因爲它們不能爲NULL,並且要求存在一個向量。迭代器與參考與指針
我最不確定的是參考文獻的有效性。 std::list< std::vector<int> >
上的某些操作會使其失效嗎?這些操作是否與使std::list
的迭代器無效相同?有沒有另外一種方法我現在沒有看到?此外,與容器的耦合感覺不對:我強制將一個特定的容器加入到Cruncher類中。提供爲清楚起見
代碼:
#include <list>
#include <vector>
#include <boost/ptr_container/ptr_list.hpp>
class Cruncher {
std::vector<int>* numPointer;
std::vector<int>& numRef;
std::list< std::vector<int> >::iterator numIterator;
public:
Cruncher(std::vector<int>*);
Cruncher(std::vector<int>&);
Cruncher(std::list< std::vector<int> >::iterator);
};
class A {
std::list< std::vector<int> > container;
boost::ptr_list< std::vector<int> > container2;
std::vector<Cruncher> cruncherList;
};
我打算使用std :: list來存儲指向對象的指針樣品。如果您只是將標準的報價更改爲解釋列表失效的部分,則您的答案沒問題。 – pmr
@pmr - 更新了我的答案,以包含更多關於列表的信息。 –