[英]How to keep track of C++ objects
我目前有一个课堂背景,用于为构成我正在制作的游戏的地面的所有块制作对象。 跟踪此较大的块列表的最佳方法是什么? 我知道如何跟踪python中的对象,但是最近我移到了C ++,我不确定如何建立易于迭代的某种列表。
在C ++中,标准库(也称为标准模板库)提供了几个存储事物集合的容器类 。 “事物”可以是任何数据类型,包括基本数据和用户定义的数据类型。
使用哪个容器取决于您的需求。 这是Microsoft的权威文章 。
最好的选择是,如果需要根据容器中的位置引用特定元素的能力,则使用vector
;或者如果元素的顺序无关紧要,则使用set
,并且需要快速检查是否有某个元素存在。
一些例子:
vector<MyClass> mycontainer; // a vector that holds objects of type MyClass
MyClass myObj;
mycontainer.push_back(myObj);
cout << mycontainer[0] << endl; // equivalent to cout << myObj << endl;
或使用一套:
set<MyClass> mycontainer;
MyClass myObj;
mycontainer.insert(myObj);
if (mycontainer.find(myObj))
cout << "Yep, myObj is in the set." << endl;
没有一个最终的容器的原因是效率之间的权衡。 一个容器在识别其中是否存在某种元素时可能会非常快,而另一种容器对于删除任意元素是最佳选择,等等。
因此,最好的选择是考虑希望容器支持哪些行为(以及效率如何!),然后查看我之前链接的权威文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.