C++ 创建指向两个相关矢量集合中的对象的指针集合

C++ Create collection of pointers to objects in two related vector collections

本文关键字:集合 指针 对象 两个 创建 C++      更新时间:2023-10-16

我正在使用Visual Studio 2010的Visual C++。我有两个相似但不完全相同的对象集合(向量)。我为这两个类创建了一个抽象基类,其中包含所有公共元素。

在基类中,每个对象都有一个保存序列号的成员,该序列号是唯一的,并且在两个集合的联合中单调递增。我需要用"下一个"和"上一个"按钮向用户显示这些对象,按此内部序列号的顺序排列。

我不能但同一集合中的所有对象(用于排序),因为它们是不同的类,即使相关。我想创建第三个指向基类对象的指针集合,并按排序顺序填充它以供显示。我在创建此集合(我已经尝试过向量、列表和简单数组)并使用指向其他两个集合中的派生类对象的指针填充它时遇到问题。

我愿意接受任何和所有建议。

戴夫

所以你的基类应该看起来像这样:

class Base{
public:
    Base() : _sequence(s_sequence++){}
    bool operator<(const Base& that) const{return _sequence < that.getSequence();}
    int getSequence() const{return _sequence;}
private:
    int _sequence;
    static int s_sequence;
};
int Base::s_sequence = 0;

然后,您可以将所有内容放在一个std::vector<Base*> foo中,您可以使用以下命令对其进行排序:

std::sort(foo.begin(), foo.end(), [](Base* first, Base* second){return *first < *second;});