osg.MixinVector是OpenSceneGraph的模板类,用于存储模板对象osg::Mixin。它提供了一些常见的向量操作函数,如添加、删除、查找和排序。
osg::MixinVector<T>是一个模板类,T是osg::Mixin子类的类型。
osg::MixinVector<T>()
void push_back(T* mixin)
在向量尾部添加一个mixin。
void insert(T* mixin, int pos)
在向量的指定位置插入一个mixin。
bool remove(T* mixin) 
从向量中删除一个mixin,如果成功删除则返回true。
void removeAll()
删除向量中的所有mixin对象。
int size()
返回向量中的mixin数目。
int getIndex(T* mixin) const
返回mixin在向量中的索引位置,如果向量中没有该mixin则返回-1。
T* at(int pos)
返回向量中指定位置的mixin对象。
T* operator[](int i)
返回向量中指定位置的mixin对象,等价于at(int pos)。
void sort()
按照Mixin的compareTo方法排序向量中的所有mixin对象。
#include <osg/MixinVector>
class MixinA : public osg::Mixin
{
public:
    int compareTo(const osg::Mixin& other) const override
    {
        const MixinA* mixin = dynamic_cast<const MixinA*>(&other);
        if (mixin)
        {
            return _value - mixin->_value;
        }
        return 0;
    }
    int getValue() const { return _value; }
    void setValue(int value) { _value = value; }
protected:
    int _value = 0;
};
int main()
{
    // 创建MixinVector对象
    osg::MixinVector<MixinA> mixins;
    // 添加MixinA对象
    MixinA* a1 = new MixinA;
    a1->setValue(1);
    mixins.push_back(a1);
    MixinA* a2 = new MixinA;
    a2->setValue(2);
    mixins.push_back(a2);
    // 按值排序
    mixins.sort();
    // 输出MixinA对象的值
    for (int i = 0; i < mixins.size(); ++i)
    {
        MixinA* a = mixins[i];
        std::cout << a->getValue() << std::endl;
    }
    // 删除MixinA对象
    mixins.remove(a1);
    mixins.remove(a2);
    return 0;
}
输出:
1
2