c ++将类成员推送到向量的正确方法

时间:2016-02-25 00:52:23

标签: c++ class oop vector

我有一个简单的类,它是来自其他库的2个对象的串联:

class MyClass {
public:
   Thing1 thing1;
   Thing2 thing2;  
};

我想要的是能够确保当我浏览thing1s列表并且我想知道关联的东西2时,我能得到正确的答案。所以我在MyClass中创建了一个向量:

std::vector<MyClass> myClasses; 

到目前为止一切顺利。现在我想从thing1的向量中填充此向量的thing1成员。我能想出的就是:

MyClass someStuff;
for(unsigned i=0; i<thing1Vec.size(); i++) {
    someStuff.thing1 = thing1Vec[i];
    myClasses.push_back(someStuff);
}

这有效,但对我来说似乎不优雅且非C ++。

我考虑过从Thing1和Thing2继承,但是我必须稍后将实例传递给其他方法。我不知道如何设置允许此类的课程。

我有点像C ++ newb,所以我可能会认为这个问题都错了。如果有人对这类事情有更好的代码,我很乐意看到它。

我认为这正是人们使用Python的原因。

1 个答案:

答案 0 :(得分:3)

听起来你想在thing1和thing2之间建立关系。将它们放在同一个类中并不一定是正确的方法

怎么样

std::map<Thing1, Thing2> thingrel;
// create map
thingrel[t1_1] = t2_1;
.....
// lookup later
Thing2 t2_x= thingrel[t1_x];

很难说这是否正确 - 因为你的代码是如此抽象

你需要确保Thing1的地图很好&#39; 。见std::maps with user-defined types as key