Gig*_*ass 7 c++ insert vector std
在我当前的代码中,我想将新的DrawObjects插入到我创建的向量中,
std :: vector <DrawObject>对象;
有什么区别:
objects.push_back(DrawObject(name, surfaceFile, xPos, yPos, willMoveVar, animationNumber));
Run Code Online (Sandbox Code Playgroud)
和
objects.push_back(new DrawObject(name, surfaceFile, xPos, yPos, willMoveVar, animationNumber));
Run Code Online (Sandbox Code Playgroud)
Naw*_*waz 16
第一个添加非指针对象,而第二个添加指向矢量的指针.所以这一切都取决于向量的声明,你应该做哪一个.
在你的情况下,因为你已经声明objects为std::vector<DrawObject>,所以第一个将工作,因为objects可以存储类型的项目DrawObject,而不是DrawObject*.
在C++ 11中,您可以使用emplace_backas:
objects.emplace_back(name, surfaceFile, xPos, yPos,
willMoveVar, animationNumber);
Run Code Online (Sandbox Code Playgroud)
注意区别.比较它:
objects.push_back(DrawObject(name, surfaceFile, xPos, yPos,
willMoveVar, animationNumber));
Run Code Online (Sandbox Code Playgroud)
使用时emplace_back,不要在调用站点构造对象,而是将参数传递给vector,并且向量在内部构造对象.在某些情况下,这可能会更快.
阅读有关emplace_back的文档(强调我的),
将新元素追加到容器的末尾.元素就地构造,即不执行复制或移动操作.使用与提供给函数的完全相同的参数调用元素的构造函数.
由于它避免了复制或移动,因此结果代码可能会更快一些.
| 归档时间: |
|
| 查看次数: |
17104 次 |
| 最近记录: |