我目前有一个班级场地,用于为构成我正在制作的游戏场地的所有块制作对象。跟踪这个有点大的块列表的最佳方法是什么?我知道如何在 python 中跟踪对象,但我最近转向 C++,我不确定如何设置某种易于迭代的列表。
问问题
3191 次
1 回答
5
在 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;
没有一个终极容器的原因是存在效率权衡。一个容器在识别其中是否存在元素方面可能非常快,而另一个容器则最适合删除任意元素等。
因此,最好的办法是考虑您希望容器支持哪些行为(以及效率如何!),然后查看我之前链接的权威文章。
于 2013-03-01T00:13:24.100 回答